diff --git a/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/WhiteboardManager.java b/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/WhiteboardManager.java
index 7dab454..f288b19 100644
--- a/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/WhiteboardManager.java
+++ b/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/WhiteboardManager.java
@@ -470,7 +470,14 @@
                     {
                         for(final ContextHandler h : handlerList)
                         {
-                            this.registerWhiteboardService(h, info);
+                            if ( info instanceof ServletContextListenerInfo )
+                            {
+                                h.getListenerRegistry().initialized((ServletContextListenerInfo)info);
+                            }
+                            else
+                            {
+                                this.registerWhiteboardService(h, info);
+                            }
                         }
                     }
                 }
@@ -501,7 +508,14 @@
                     {
                         for(final ContextHandler h : handlerList)
                         {
-                            this.unregisterWhiteboardService(h, info);
+                            if ( !(info instanceof ServletContextListenerInfo ) )
+                            {
+                                this.unregisterWhiteboardService(h, info);
+                            }
+                            else
+                            {
+                                h.getListenerRegistry().initialized((ServletContextListenerInfo)info);
+                            }
                         }
                     }
                 }
