czw., 14 lip 2022 o 15:34 Richard Hierlmeier <[email protected]> napisał(a):
> The only requirement is that a servlet that is deployed via http > whiteboard has the same session as the servlet that is part of the WAB. > In order to whiteboard-register a servlet to the same context which is backing a WAB, you have to register the servlet pointing to relevant context. By default, the selector is: osgi.http.whiteboard.context.select = (osgi.http.whiteboard.context.name =default) You just have to register a servlet with: osgi.http.whiteboard.context.select = (osgi.http.whiteboard.context.path=/path) where "/path" is the same value as in Web-ContextPath header of the WAB. Check AbstractWabWhiteboardConflictIntegrationTest.java <https://github.com/ops4j/org.ops4j.pax.web/blob/web-8.0.6/pax-web-itest/pax-web-itest-container/pax-web-itest-container-common/src/main/java/org/ops4j/pax/web/itest/container/war/AbstractWabWhiteboardConflictIntegrationTest.java#L55-L69>[1] - it's a filter registration, but the principle is the same. regards Grzegorz Grzybek === [1]: https://github.com/ops4j/org.ops4j.pax.web/blob/web-8.0.6/pax-web-itest/pax-web-itest-container/pax-web-itest-container-common/src/main/java/org/ops4j/pax/web/itest/container/war/AbstractWabWhiteboardConflictIntegrationTest.java#L55-L69 > > Richard > > Am Do., 14. Juli 2022 um 15:13 Uhr schrieb Grzegorz Grzybek < > [email protected]>: > >> Hello >> >> czw., 14 lip 2022 o 15:05 Richard Hierlmeier <[email protected]> >> napisał(a): >> >>> How can I define the ServletContextHelper for a WAB? I can not find any >>> hint in the R7 spec. >>> >> >> You ... can't. There's nothing at all about ServletContextHelper concept >> (Whiteboard) in chapter 128 (WABs). >> >> Pax Web 8 explicitly defines special class >> org.ops4j.pax.web.extender.war.internal.WebApplicationHelper, which extends >> org.ops4j.pax.web.service.spi.context.DefaultServletContextHelper which >> extends org.osgi.service.http.context.ServletContextHelper. >> >> Such implementation is specially crafted to: >> - provide org.osgi.service.http.context.ServletContextHelper >> - handle WAR scenarios related to resource access >> >> It is then set inside >> org.ops4j.pax.web.service.spi.model.OsgiContextModel - a common "context" >> representation for HttpService, Whiteboard and WAB scenarios. >> >> Out of curiosity - do you have any special requirement that a WAB needs >> custom context? >> >> Mind that org.osgi.service.http.context.ServletContextHelper in >> Whiteboard has two responsibilities: >> - security (WABs/WARs have better ways to deal with this) >> - resource access (WABs/WARs have standard resource access methods >> defined in the Servlets specification itself) >> >> regards >> Grzegorz Grzybek >> >> >>> >>> Richard >>> >>> Am Mo., 27. Juni 2022 um 16:15 Uhr schrieb Grzegorz Grzybek < >>> [email protected]>: >>> >>>> Hi >>>> >>>> >>>> pon., 27 cze 2022 o 16:04 Richard Hierlmeier < >>>> [email protected]> napisał(a): >>>> >>>>> Hi Grzegorz. >>>>> >>>>> thank you for clarification. Unfortunately I can not upgrade to Karaf >>>>> 4.4 the next time. >>>>> What would happen when I define the session cookie name in jetty.xml >>>>> and not in the wab? >>>>> >>>> >>>> To answer more precisely, I'd have to check your current configuration >>>> - what WAB are you deploying and what are the registration properties of >>>> the HttpWhiteboard servlet. Only then I could check (going back to Karaf >>>> 4.3.7) what may be the issue related to context configuration... >>>> >>>> regards >>>> Grzegorz Grzybek >>>> >>>> >>>>> >>>>> >>>>> Richard >>>>> >>>>> >>>>> Am Mo., 27. Juni 2022 um 12:02 Uhr schrieb Grzegorz Grzybek < >>>>> [email protected]>: >>>>> >>>>>> Hello >>>>>> >>>>>> Unfortunately, only with Pax Web 8 (used in Karaf 4.4+) we've >>>>>> refactored the WAB/HttpService/Whiteboard inter operation. Pax Web 8 >>>>>> allows >>>>>> mixing web elements coming from different "origins" (whiteboard >>>>>> registration, direct registration using HttpService or >>>>>> web.xml/web-fragment.xml approach from WABs). >>>>>> >>>>>> So in Pax Web 8 you should be able to reconfigure the session cookie >>>>>> name and there servlets registered using Whiteboard targetting the same >>>>>> context (as in WAB) should use the same session configuration. >>>>>> >>>>>> Also - Pax Web 8 implements correctly the session separation >>>>>> mentioned in >>>>>> https://docs.osgi.org/specification/osgi.cmpn/7.0.0/service.http.whiteboard.html#service.http.whiteboard.servletcontext >>>>>> : >>>>>> >>>>>> Http Sessions are not shared amongst servlets registered with >>>>>>> different ServletContextHelpers. That is, HttpRequest.getSession calls >>>>>>> must >>>>>>> provide different sessions per associated ServletContextHelper >>>>>>> >>>>>> >>>>>> So even if two whiteboard servlets are registered to the same target >>>>>> servlet context, but using different ServletContextHelper, they'll use >>>>>> different session configuration. >>>>>> >>>>>> kind regards >>>>>> Grzegorz Grzybek >>>>>> >>>>>> pon., 27 cze 2022 o 11:33 Richard Hierlmeier < >>>>>> [email protected]> napisał(a): >>>>>> >>>>>>> >>>>>>> My application runs in Karaf 4.3.7. I have a web application that is >>>>>>> deployed as wab application bundle (wab). This web application changes >>>>>>> the >>>>>>> session cookie name in >>>>>>> javax.servlet.ServletContextListener#contextInitialized(). >>>>>>> >>>>>>> In another bundle I have a servlet that is defined with >>>>>>> HttpWhiteBoard. >>>>>>> The servlets from the wab and the servlets from HttpWhiteBoard have >>>>>>> different http sessions (because they have different session cookie >>>>>>> names >>>>>>> in the ServletContext). >>>>>>> >>>>>>> Is it possible to configure the session cookie for Servlets that are >>>>>>> deployed via HttpWhiteBoard? >>>>>>> >>>>>>> Regards >>>>>>> >>>>>>> Richard >>>>>>> >>>>>>>
