Hello

pt., 29 lip 2022 o 17:33 Richard Hierlmeier <[email protected]>
napisał(a):

> I implemented a sample project that tests that a http whiteboard servlet
> can have the same http session as a servlet that is part of a WAB.
>
> See https://github.com/rhierlmeier/paxweb8-test
>
> It is working with PAX-WEB 8 :)
>

I'm glad to hear that! You got my github star ;)

regards
Grzegorz Grzybek


>
> Thank you
>
>   Richard
>
> Am Do., 14. Juli 2022 um 16:47 Uhr schrieb Grzegorz Grzybek <
> [email protected]>:
>
>>
>>
>> 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
>>>>>>>>>>>
>>>>>>>>>>>

Reply via email to