Felix Meschberger created FELIX-5446:
----------------------------------------
Summary: Http Service ignores Whiteboard Servlet API Listeners
Key: FELIX-5446
URL: https://issues.apache.org/jira/browse/FELIX-5446
Project: Felix
Issue Type: Bug
Components: HTTP Service
Affects Versions: http.jetty-3.4.0
Reporter: Felix Meschberger
Situation:
# A ServletRequestListener registered with the Http Whiteboard Service
(standard OSGi Http Whiteboard) with property
{{osgi.http.whiteboard.listener==true}}.
# A Servlet registered with the traditional OSGi HttpService
Problem: The ServletRequestListener is not called for requests for requests to
said servlet.
Investigation: It looks like the ServletRequestListenerManager used to handle
ServletRequestListener services for traditionally registered Servlets
explicitly ignores listeners registered with the
{{osgi.http.whiteboard.listener}} property set. See this code in
[ServletRequestListenerManager|https://github.com/apache/felix/blob/trunk/http/base/src/main/java/org/apache/felix/http/base/internal/service/listener/ServletRequestListenerManager.java#L45].
For one thing, the listener should at best ignore services registered with the
property set to true. If the property is set to anything else, it will
explicitly be ignored by the OSGi Whiteboard Http Service and thus should
probably be accepted by the legacy Felix Http Service implementation.
On the other hand: Why ignore at all ? Originally the legacy Felix Http Service
accepted all Servlet API listeners regardless of such property set. So if there
is a listener used and the Jetty bundle is updated and the service updated to
make sure it is called for new OSGi Whiteboard services it will not be called
any more for the legacy registered services
I think the legacy Felix Http Service should just accept all listeners like it
always did.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)