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