You can have multiple patterns just by adding the property as a String[]/Collection. See https://osgi.org/javadoc/osgi.cmpn/7.0.0/org/osgi/service/http/whiteboard/propertytypes/HttpWhiteboardServletPattern.html#value-- <https://osgi.org/javadoc/osgi.cmpn/7.0.0/org/osgi/service/http/whiteboard/propertytypes/HttpWhiteboardServletPattern.html#value--> which is the component property type for that whiteboard property.
If you can’t use component property types then repeated single value entries in the property element get aggregated into an array. Tim > On 23 Oct 2018, at 17:32, Leschke, Scott <[email protected]> wrote: > > Thanks Tim, > > That’s exactly what I thought but without it I get the following from Jetty. > HTTP ERROR 404 > Problem accessing /myApp/. Reason: > Not Found > > Perhaps that’s related to something else and the presence/absence of > Web-ContextPath is triggering the other issue. I’ll see what I can figure > out in that regard. > > I do have one last question though. I’m wondering what the syntax is to > associate multiple URL patterns with a single servlet. I assume I can use > wildcarding and stuff like that but can I use a Java RE? How about a URL > list? Comma separated, bounded by braces, brackets? > > I’m thought I had a copy of the R6 compendium squirreled away so that I could > just look it up but it may be on my machine at home and for some reason I’m > not seeing it at osgi.org <http://osgi.org/> even though I’m sure it’s there > somewhere. > > Scott > > From: Tim Ward <[email protected]> > Sent: Tuesday, October 23, 2018 10:09 AM > To: [email protected] > Subject: Re: Http Whiteboard > > I wouldn’t expect you to need anything specific in your bnd file. > Web-ContextPath is part of a different OSGi specification (the Web > Application Bundle spec) so there shouldn’t be any need for that at all. > > Best Regards, > > Tim > > > On 23 Oct 2018, at 17:06, Leschke, Scott <[email protected] > <mailto:[email protected]>> wrote: > > Thanks Tim. That was the problem. I noticed that just after I sent the email > but hadn’t had a chance to try it yet. I pulled that from a YouTube video > Ray Auge did way back in 2014 and sort of blindly regurgitated what I saw. > > There’s something else I noticed though. It would seem that it’s still > necessary to define > Web-ContextPath .bnd file as it doesn’t appear to work without that. Is that > right? > > From: Tim Ward <[email protected] <mailto:[email protected]>> > Sent: Monday, October 22, 2018 4:28 PM > To: [email protected] <mailto:[email protected]> > Subject: Re: Http Whiteboard > > I’m pretty sure that your ServletContextHelper isn’t advertised as a service > and is therefore invisible to the whiteboard. ServletContextHelper is not an > interface so you need to be explicit. > > Tim > > Sent from my iPhone > > On 22 Oct 2018, at 23:04, Leschke, Scott <[email protected] > <mailto:[email protected]>> wrote: > > > I’ve in the process of trying to convert a couple of servlets over to user > HttpWhiteboard. I looked online for an example and it seemed pretty straight > forward. > Based on my understanding, I came up with the following but it doesn’t work. > Jetty doesn’t have a myApp context. I assume there is something missing? > > Help? > > Scott > > > @Component( > property = { > HTTP_WHITEBOARD_CONTEXT_NAME + '=' + ContextHelper.CTX_NAME, > HTTP_WHITEBOARD_CONTEXT_PATH + '=' + ContextHelper.CTX_PATH > } > ) > public class ContextHelper > extends org.osgi.service.http.context.ServletContextHelper > { > public static final String CTX_NAME = "myApp"; > public static final String CTX_PATH = '/' + CTX_NAME; > } > > > @Component( > name = “myApp.listings", > property = { > HTTP_WHITEBOARD_CONTEXT_SELECT + "=(" + > HTTP_WHITEBOARD_CONTEXT_NAME + '=' + ContextHelper.CTX_NAME + ')', > HTTP_WHITEBOARD_SERVLET_NAME + '=' + "MyApp Listings", > HTTP_WHITEBOARD_SERVLET_PATTERN + '=' + "/list/*" > }, > service = Servlet.class, > immediate = true) > @Designate( > ocd = AppConfig.class) > public class Listings > implements HttpServlet > {…}
