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

Reply via email to