Platform: debian 10.9 "buster", amd64, openjdk 11, karaf 4.3.0,
maven-bundle-plugin 5.1.2
I'm trying to replace the OSGi 6 web whiteboard annotations with OSGi 7
web whiteboard annotations.
For the ServletContextHelper, I've replaced this:
@Component(
property= {
HttpWhiteboardConstants.HTTP_WHITEBOARD_CONTEXT_NAME+"=handlereg",
HttpWhiteboardConstants.HTTP_WHITEBOARD_CONTEXT_PATH+"=/handlereg"},
service=ServletContextHelper.class,
immediate=true
)
with this:
@Component(service=ServletContextHelper.class, immediate=true)
@HttpWhiteboardContext(name = "handlereg", path = "/handlereg")
That worked fine.
The
OSGI-INF/no.priv.bang.handlereg.web.security.HandleregServletContextHelper.xml
file is, AFAICT, identical for the two cases.
Then I've tried to change the annotations with one of the servlets.
I've replaced this:
@Component(
property= {
HttpWhiteboardConstants.HTTP_WHITEBOARD_SERVLET_PATTERN+"=/*",
HttpWhiteboardConstants.HTTP_WHITEBOARD_CONTEXT_SELECT + "=(" +
HttpWhiteboardConstants.HTTP_WHITEBOARD_CONTEXT_NAME +"=handlereg)",
HttpWhiteboardConstants.HTTP_WHITEBOARD_SERVLET_NAME+"=handlereg"},
service=Servlet.class,
immediate=true
)
with this:
@Component(service=Servlet.class, immediate=true)
@HttpWhiteboardContextSelect("(" + HTTP_WHITEBOARD_CONTEXT_NAME + "=handlereg")
@HttpWhiteboardServletName("handlereg")
@HttpWhiteboardServletPattern("/*")
(Note: I've also done a static import of the constants of
HttpWhiteboardConstants)
But I get 404 for the servlet.
Does anyone know what I'm doing wrong?
I've looked at the
OSGI-INF/no.priv.bang.handlereg.web.frontend.HandleregServlet.xml
file created with both OSGi 6 annotations and OSGi 7 annotations.
With OSGi 6 annotations, the file looks like this
https://gist.github.com/steinarb/fea05dfd8f89990218bc2eacbe7ce953
With OSGi 7 annotations, the file looks like this
https://gist.github.com/steinarb/3472c385755cc76c1d7875bb5e8aad4c
There is a difference in osgi.http.whiteboard.servlet.pattern in the
two.
OSGi 6:
<property name="osgi.http.whiteboard.servlet.pattern" type="String"
value="/*"/>
OSGi 7:
<property name="osgi.http.whiteboard.servlet.pattern"
type="String">/*</property>
Is that the problem?
If so, how can I fix it?
Here's the maven-bundle-config fron the effective POM:
https://gist.github.com/steinarb/e170c56b13ac49135859490f02b28421
Thanks!
- Steinar