diff --git a/http/base/src/main/java/org/apache/felix/http/base/internal/service/listener/AbstractListenerManager.java b/http/base/src/main/java/org/apache/felix/http/base/internal/service/listener/AbstractListenerManager.java
index 22687a1..558484d 100644
--- a/http/base/src/main/java/org/apache/felix/http/base/internal/service/listener/AbstractListenerManager.java
+++ b/http/base/src/main/java/org/apache/felix/http/base/internal/service/listener/AbstractListenerManager.java
@@ -21,11 +21,16 @@
 import java.util.ArrayList;
 import java.util.Iterator;
 
+import org.apache.felix.http.base.internal.logger.SystemLogger;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.Filter;
 import org.osgi.framework.ServiceReference;
 import org.osgi.util.tracker.ServiceTracker;
 
+/**
+ * @deprecated
+ */
+@Deprecated
 public class AbstractListenerManager<ListenerType> extends ServiceTracker<ListenerType, ListenerType>
 {
 
@@ -75,33 +80,37 @@
     @Override
     public ListenerType addingService(ServiceReference<ListenerType> reference)
     {
+        final ListenerType result = super.addingService(reference);
+        if ( result != null ) {
+            SystemLogger.warning("Deprecation warning: " +
+                "Listener registered through Apache Felix whiteboard service: " + reference +
+                ". Please change your code to the OSGi Whiteboard Service.", null);
+        }
         synchronized (lock)
         {
             allContextListeners = null;
         }
 
-        return super.addingService(reference);
+        return result;
     }
 
     @Override
     public void modifiedService(ServiceReference<ListenerType> reference, ListenerType service)
     {
+        super.modifiedService(reference, service);
         synchronized (lock)
         {
             allContextListeners = null;
         }
-
-        super.modifiedService(reference, service);
     }
 
     @Override
     public void removedService(ServiceReference<ListenerType> reference, ListenerType service)
     {
+        super.removedService(reference, service);
         synchronized (lock)
         {
             allContextListeners = null;
         }
-
-        super.removedService(reference, service);
     }
 }
diff --git a/http/base/src/main/java/org/apache/felix/http/base/internal/service/listener/HttpSessionAttributeListenerManager.java b/http/base/src/main/java/org/apache/felix/http/base/internal/service/listener/HttpSessionAttributeListenerManager.java
index 74a1a1f..99c2bf8 100644
--- a/http/base/src/main/java/org/apache/felix/http/base/internal/service/listener/HttpSessionAttributeListenerManager.java
+++ b/http/base/src/main/java/org/apache/felix/http/base/internal/service/listener/HttpSessionAttributeListenerManager.java
@@ -31,7 +31,9 @@
  * The <code>ProxyListener</code> implements the Servlet API 2.4 listener
  * interfaces forwarding any event calls to registered OSGi services
  * implementing the respective Servlet API 2.4 listener interface.
+ * @deprecated
  */
+@Deprecated
 public class HttpSessionAttributeListenerManager extends AbstractListenerManager<HttpSessionAttributeListener>
     implements HttpSessionAttributeListener
 {
diff --git a/http/base/src/main/java/org/apache/felix/http/base/internal/service/listener/HttpSessionListenerManager.java b/http/base/src/main/java/org/apache/felix/http/base/internal/service/listener/HttpSessionListenerManager.java
index b7c3b6c..fabc7ee 100644
--- a/http/base/src/main/java/org/apache/felix/http/base/internal/service/listener/HttpSessionListenerManager.java
+++ b/http/base/src/main/java/org/apache/felix/http/base/internal/service/listener/HttpSessionListenerManager.java
@@ -31,7 +31,10 @@
  * The <code>ProxyListener</code> implements the Servlet API 2.4 listener
  * interfaces forwarding any event calls to registered OSGi services
  * implementing the respective Servlet API 2.4 listener interface.
+ *
+ * @deprecated
  */
+@Deprecated
 public class HttpSessionListenerManager extends AbstractListenerManager<HttpSessionListener> implements
     HttpSessionListener
 {
diff --git a/http/base/src/main/java/org/apache/felix/http/base/internal/service/listener/ServletContextAttributeListenerManager.java b/http/base/src/main/java/org/apache/felix/http/base/internal/service/listener/ServletContextAttributeListenerManager.java
index 8af09d1..976b88a 100644
--- a/http/base/src/main/java/org/apache/felix/http/base/internal/service/listener/ServletContextAttributeListenerManager.java
+++ b/http/base/src/main/java/org/apache/felix/http/base/internal/service/listener/ServletContextAttributeListenerManager.java
@@ -31,7 +31,9 @@
  * The <code>ProxyListener</code> implements the Servlet API 2.4 listener
  * interfaces forwarding any event calls to registered OSGi services
  * implementing the respective Servlet API 2.4 listener interface.
+ * @deprecated
  */
+@Deprecated
 public class ServletContextAttributeListenerManager extends AbstractListenerManager<ServletContextAttributeListener>
     implements ServletContextAttributeListener
 {
diff --git a/http/base/src/main/java/org/apache/felix/http/base/internal/service/listener/ServletRequestAttributeListenerManager.java b/http/base/src/main/java/org/apache/felix/http/base/internal/service/listener/ServletRequestAttributeListenerManager.java
index 29d83be..e2315db 100644
--- a/http/base/src/main/java/org/apache/felix/http/base/internal/service/listener/ServletRequestAttributeListenerManager.java
+++ b/http/base/src/main/java/org/apache/felix/http/base/internal/service/listener/ServletRequestAttributeListenerManager.java
@@ -31,7 +31,9 @@
  * The <code>ProxyListener</code> implements the Servlet API 2.4 listener
  * interfaces forwarding any event calls to registered OSGi services
  * implementing the respective Servlet API 2.4 listener interface.
+ * @deprecated
  */
+@Deprecated
 public class ServletRequestAttributeListenerManager
     extends AbstractListenerManager<ServletRequestAttributeListener>
     implements ServletRequestAttributeListener
diff --git a/http/base/src/main/java/org/apache/felix/http/base/internal/service/listener/ServletRequestListenerManager.java b/http/base/src/main/java/org/apache/felix/http/base/internal/service/listener/ServletRequestListenerManager.java
index 01a8916..94ef397 100644
--- a/http/base/src/main/java/org/apache/felix/http/base/internal/service/listener/ServletRequestListenerManager.java
+++ b/http/base/src/main/java/org/apache/felix/http/base/internal/service/listener/ServletRequestListenerManager.java
@@ -31,7 +31,9 @@
  * The <code>ProxyListener</code> implements the Servlet API 2.4 listener
  * interfaces forwarding any event calls to registered OSGi services
  * implementing the respective Servlet API 2.4 listener interface.
+ * @deprecated
  */
+@Deprecated
 public class ServletRequestListenerManager
     extends AbstractListenerManager<ServletRequestListener>
     implements ServletRequestListener
