Raymond, I'm using pax-web whiteboard extender. I dont have an account to create bug but i think the issue is related to this : https://ops4j1.jira.com/projects/PAXWEB/issues/PAXWEB-1123?filter=allopenissues
On Thu, Sep 13, 2018 at 8:12 AM, Raymond Auge <[email protected]> wrote: > Thai, what you described sounds like a bug in the http whiteboard > implementation. Which do you use and could you file a bug against it? > > - Ray > > On Wed, Sep 12, 2018, 17:38 Nhut Thai Le, <[email protected]> wrote: > >> Thank you Raymond, >> >> I called the HttpServiceRuntim.calculateRequestInfoDTO("/token") inside >> my servlet and i see my filter listed as filterDTOs: >> {"path":"/token", "servletContextId":125, >> "filterDTOs":[{"name":"AuthenticationFilter", >> "patterns":["/*"], "servletNames":null, "regexs":null, >> "asyncSupported":false, "dispatcher":[], "initParams":{"component.id":"33", >> "component.name":"com.casto...ionFilter", "service.id":"117", >> "objectClass":"[Ljava.la...@5891e480", "filterRank":"10", >> "service.scope":"prototype", "osgi.http.whiteboard.filter.pattern":"/*", >> "osgi.http.whiteboard.filter.name":"AuthenticationFilter", >> "osgi.http.whiteboard.context.select":"(osgi.htt...xtHelper)", >> "service.ranking":"10", "service.bundleid":"136"}, "serviceId":117, >> "servletContextId":125}], "servletDTO":{"patterns":["/token"], >> "name":null, "servletInfo":"", "asyncSupported":false, "initParams":{}, >> "servletContextId":125, "serviceId":127}, "resourceDTO":null} >> >> However, the filter is still not triggered. If i manually create a >> ServletContextHelper and add "osgi.http.whiteboard.context.select=( >> osgi.http.whiteboard.context.name=SharedServletContextHelper)" to both >> the filter and the servlet then i can see the filter kick in before the >> request hit the servlet. So I think shared servlet context is required to >> have the filters works across bundles. My concern is that i cannot use the >> SharedServletContextHelper on the resource service because it will not see >> the icons folder in my bundle. Here is the debug log if i use the >> SharedServletContextHelper with the resource service: >> >> [qtp345379538-59] DEBUG org.eclipse.jetty.servlet.ServletHandler - >> servlet |/static/icons|/bundle1.png -> /static/icons/*:/icons@ >> d606ba18==org.ops4j.pax.web.service.jetty.internal. >> ResourceServlet,jsp=null,order=-1,inst=true >> [qtp345379538-59] DEBUG >> org.ops4j.pax.web.service.jetty.internal.HttpServiceContext >> - Handling request for [/static/icons/bundle1.png] using http context >> [org.ops4j.pax.web.extender.whiteboard.internal.WebApplication$1@1b9ac962 >> ] >> [qtp345379538-59] DEBUG >> org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler >> - handling request org.ops4j.pax.web.service.jetty.internal. >> HttpServiceRequestWrapper@5b1bfc6, org.ops4j.pax.web.service. >> jetty.internal.HttpServiceResponseWrapper@b765100 >> [qtp345379538-59] DEBUG org.eclipse.jetty.servlet.ServletHandler - >> chain=org.ops4j.pax.web.service.spi.model.FilterModel- >> 13->/static/icons/*:/icons@d606ba18==org.ops4j.pax.web. >> service.jetty.internal.ResourceServlet,jsp=null,order=-1,inst=true >> [qtp345379538-59] DEBUG org.eclipse.jetty.servlet.ServletHandler - call >> filter org.ops4j.pax.web.service.spi.model.FilterModel-13 >> [qtp345379538-59] DEBUG org.eclipse.jetty.servlet.ServletHandler - call >> servlet /static/icons/*:/icons@d606ba18==org.ops4j.pax.web. >> service.jetty.internal.ResourceServlet,jsp=null,order=-1,inst=true <<<<<LOOK >> LIKE TRYING TO FIND THE ICONS FOLDER IN ANOTHER BUNDLE >> [qtp345379538-59] DEBUG org.eclipse.jetty.servlet.ErrorPageErrorHandler >> - getErrorPage(GET /static/icons/bundle1.png) => error_page=null (from >> global default) >> >> So now the question really is how to hook my servlet filter to a resource >> service. >> >> Thai >> >> On Wed, Sep 12, 2018 at 3:01 PM, Raymond Auge <[email protected]> >> wrote: >> >>> Hello Thai, >>> >>> I don't see anything wrong. >>> >>> It looks like they all "target" the default "ServletContextHelper" (i.e. >>> the same context) and so the filter should apply to each. >>> >>> You should be able to check by getting the HttpServiceRuntime [1] >>> service and calling the method `calculateRequestInfoDTO(String path)` >>> to see what the runtime thinks is wired up for that path. >>> >>> Sincerely, >>> - Ray >>> >>> [1] https://osgi.org/specification/osgi.cmpn/7.0.0/ >>> service.http.whiteboard.html#org.osgi.service.http.runtime. >>> HttpServiceRuntime >>> >>> On Wed, Sep 12, 2018 at 2:39 PM, Nhut Thai Le via osgi-dev < >>> [email protected]> wrote: >>> >>>> Hello, >>>> >>>> I want to have a filter at the root of my application where all http >>>> requests must pass through, so I make a Servlet filter: >>>> @Component( >>>> service=Filter.class, >>>> scope=ServiceScope.PROTOTYPE, >>>> property= { >>>> "osgi.http.whiteboard.filter.name=AuthenticationFilter", >>>> "osgi.http.whiteboard.filter.pattern=/*", >>>> "service.ranking:Integer=10" >>>> } >>>> ) >>>> public final class AuthenticationFilter implements Filter {...} >>>> ----------------------------- >>>> Then I have some servlets (in other bundles) defined like this: >>>> @Component( >>>> service = Servlet.class, >>>> property= { >>>> "osgi.http.whiteboard.servlet.pattern=/token" >>>> } >>>> ) >>>> public class AccessTokenServlet extends HttpServlet{...} >>>> ------------------------------- >>>> I also have some resource services in other bundles: >>>> @Component(service = IconsResourceService.class, >>>> property = { >>>> "osgi.http.whiteboard.resource.pattern=/static/icons/*", >>>> "osgi.http.whiteboard.resource.prefix=/icons" >>>> } >>>> ) >>>> public class IconsResourceService {} >>>> ----------------------- >>>> However, my filter never trigger when i request the icon (static >>>> resource) or token (servlet). My understanding is that the 3 components >>>> above reside in different bundles thus they have different servlet contexts >>>> so the filter wont trigger. I can created a ServletContextHelper and select >>>> it in the Servlet component annotation but this wont help in the case of >>>> the resource service. Is there other way to share filter across bundles? >>>> >>>> Thai >>>> >>>> _______________________________________________ >>>> OSGi Developer Mail List >>>> [email protected] >>>> https://mail.osgi.org/mailman/listinfo/osgi-dev >>>> >>> >>> >>> >>> -- >>> *Raymond Augé* <http://www.liferay.com/web/raymond.auge/profile> >>> (@rotty3000) >>> Senior Software Architect *Liferay, Inc.* <http://www.liferay.com> >>> (@Liferay) >>> Board Member & EEG Co-Chair, OSGi Alliance <http://osgi.org> >>> (@OSGiAlliance) >>> >> >> >> >> -- >> Castor Technologies Inc >> 460 rue St-Catherine St >> <https://maps.google.com/?q=460+rue+St-Catherine+St&entry=gmail&source=g> >> Ouest, Suite 613 >> Montréal, Québec H3B-1A7 >> (514) 360-7208 o >> (514) 798-2044 f >> [email protected] >> www.castortech.com >> >> CONFIDENTIALITY NOTICE: The information contained in this e-mail is >> confidential and may be proprietary information intended only for the use >> of the individual or entity to whom it is addressed. If the reader of this >> message is not the intended recipient, you are hereby notified that any >> viewing, dissemination, distribution, disclosure, copy or use of the >> information contained in this e-mail message is strictly prohibited. If you >> have received and/or are viewing this e-mail in error, please immediately >> notify the sender by reply e-mail, and delete it from your system without >> reading, forwarding, copying or saving in any manner. Thank you. >> AVIS DE CONFIDENTIALITE: L’information contenue dans ce message est >> confidentiel, peut être protégé par le secret professionnel et est réservé >> à l'usage exclusif du destinataire. Toute autre personne est par les >> présentes avisée qu'il lui est strictement interdit de diffuser, distribuer >> ou reproduire ce message. Si vous avez reçu cette communication par erreur, >> veuillez la détruire immédiatement et en aviser l'expéditeur. Merci. >> > -- Castor Technologies Inc 460 rue St-Catherine St Ouest, Suite 613 Montréal, Québec H3B-1A7 (514) 360-7208 o (514) 798-2044 f [email protected] www.castortech.com CONFIDENTIALITY NOTICE: The information contained in this e-mail is confidential and may be proprietary information intended only for the use of the individual or entity to whom it is addressed. If the reader of this message is not the intended recipient, you are hereby notified that any viewing, dissemination, distribution, disclosure, copy or use of the information contained in this e-mail message is strictly prohibited. If you have received and/or are viewing this e-mail in error, please immediately notify the sender by reply e-mail, and delete it from your system without reading, forwarding, copying or saving in any manner. Thank you. AVIS DE CONFIDENTIALITE: L’information contenue dans ce message est confidentiel, peut être protégé par le secret professionnel et est réservé à l'usage exclusif du destinataire. Toute autre personne est par les présentes avisée qu'il lui est strictement interdit de diffuser, distribuer ou reproduire ce message. Si vous avez reçu cette communication par erreur, veuillez la détruire immédiatement et en aviser l'expéditeur. Merci.
_______________________________________________ OSGi Developer Mail List [email protected] https://mail.osgi.org/mailman/listinfo/osgi-dev
