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