czw., 14 lip 2022 o 15:50 Richard Hierlmeier <[email protected]> napisał(a):
> Great, thank you. > > but this works only with PAX-WEB8, correct? > Yes... Pax Web 7 and earlier is not implementing context selection properly. Actually https://github.com/ops4j/org.ops4j.pax.web/issues/1413 / https://ops4j1.jira.com/browse/PAXWEB-1123 was the main reason I decided to refactor Pax Web ;) regards Grzegorz Grzybek > > Richard > > Am Do., 14. Juli 2022 um 15:42 Uhr schrieb Grzegorz Grzybek < > [email protected]>: > >> >> >> 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 >>>>>>>>> >>>>>>>>>
