diff --git a/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/ServletContextHelperManager.java b/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/ServletContextHelperManager.java
index 7ea4967..8e82d60 100644
--- a/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/ServletContextHelperManager.java
+++ b/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/ServletContextHelperManager.java
@@ -383,18 +383,21 @@
         {
             this.httpService.registerResource(handler, (ResourceInfo)info);
         }
+        
         else if ( info instanceof ServletContextAttributeListenerInfo )
         {
             handler.addListener((ServletContextAttributeListenerInfo)info );
         }
+
+        else if ( info instanceof HttpSessionListenerInfo )
+        {
+            handler.addListener((HttpSessionListenerInfo)info );
+        }
         else if ( info instanceof HttpSessionAttributeListenerInfo )
         {
             handler.addListener((HttpSessionAttributeListenerInfo)info );
         }
-        else if ( info instanceof HttpSessionListenerInfo )
-        {
-            handler.addListener((HttpSessionListenerInfo)info );
-        }
+
         else if ( info instanceof ServletRequestListenerInfo )
         {
             handler.addListener((ServletRequestListenerInfo)info );
@@ -424,18 +427,21 @@
         {
             this.httpService.unregisterResource(handler, (ResourceInfo)info);
         }
+        
         else if ( info instanceof ServletContextAttributeListenerInfo )
         {
             handler.removeListener((ServletContextAttributeListenerInfo)info );
         }
+        
+        else if ( info instanceof HttpSessionListenerInfo )
+        {
+            handler.removeListener((HttpSessionListenerInfo)info );
+        }
         else if ( info instanceof HttpSessionAttributeListenerInfo )
         {
             handler.removeListener((HttpSessionAttributeListenerInfo)info );
         }
-        else if ( info instanceof HttpSessionListenerInfo )
-        {
-            handler.removeListener((HttpSessionListenerInfo)info );
-        }
+
         else if ( info instanceof ServletRequestListenerInfo )
         {
             handler.removeListener((ServletRequestListenerInfo)info );
diff --git a/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/WhiteboardHttpService.java b/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/WhiteboardHttpService.java
index c285ba9..faca570 100644
--- a/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/WhiteboardHttpService.java
+++ b/http/base/src/main/java/org/apache/felix/http/base/internal/whiteboard/WhiteboardHttpService.java
@@ -38,6 +38,8 @@
 import org.apache.felix.http.base.internal.whiteboard.tracker.HttpSessionAttributeListenerTracker;
 import org.apache.felix.http.base.internal.whiteboard.tracker.HttpSessionListenerTracker;
 import org.apache.felix.http.base.internal.whiteboard.tracker.ResourceTracker;
+import org.apache.felix.http.base.internal.whiteboard.tracker.ServletContextAttributeListenerTracker;
+import org.apache.felix.http.base.internal.whiteboard.tracker.ServletContextHelperTracker;
 import org.apache.felix.http.base.internal.whiteboard.tracker.ServletContextListenerTracker;
 import org.apache.felix.http.base.internal.whiteboard.tracker.ServletRequestAttributeListenerTracker;
 import org.apache.felix.http.base.internal.whiteboard.tracker.ServletRequestListenerTracker;
@@ -73,13 +75,18 @@
         this.handlerRegistry = handlerRegistry;
         this.bundleContext = bundleContext;
         this.contextManager = new ServletContextHelperManager(bundleContext, context, runtimeRef, this);
+        
         addTracker(new FilterTracker(bundleContext, contextManager));
         addTracker(new ServletTracker(bundleContext, this.contextManager));
         addTracker(new ResourceTracker(bundleContext, this.contextManager));
-        addTracker(new HttpSessionAttributeListenerTracker(bundleContext, this.contextManager));
+
         addTracker(new HttpSessionListenerTracker(bundleContext, this.contextManager));
+        addTracker(new HttpSessionAttributeListenerTracker(bundleContext, this.contextManager));
+
+        addTracker(new ServletContextHelperTracker(bundleContext, this.contextManager));
         addTracker(new ServletContextListenerTracker(bundleContext, this.contextManager));
-        addTracker(new ServletContextListenerTracker(bundleContext, this.contextManager));
+        addTracker(new ServletContextAttributeListenerTracker(bundleContext, this.contextManager));
+        
         addTracker(new ServletRequestListenerTracker(bundleContext, this.contextManager));
         addTracker(new ServletRequestAttributeListenerTracker(bundleContext, this.contextManager));
     }
