Hi Lukasz,

this is definitely the right list to ask for.
Right now I don't have much time or energy to look at your issue in a
closer detail.
If in doubt about how a shared context is about to work, please take a look
at the samples and / or the integration tests.
There are some available and I hope they make some of your questions
clearer. If not I might have some more free cycles and a clearer mind about
that next week ...

regards, Achim


2017-06-30 11:23 GMT+02:00 Lukasz Lech <[email protected]>:

> Hello,
>
>
>
> I hope this group is appropriate for asking this question, if not, my
> apologize and please suggest if there is appropriate place to ask.
>
>
>
> I’ve submitted the issue https://ops4j1.jira.com/browse/PAXWEB-1105
> because I need to register session listener for WebServices created by
> JaxrsPublisher.
>
>
>
> I’ve added parameter doing what is described in the issue, and after
> deploying and modifying configuration file, the shared http context
> instance is returned upon createDefaultHttpContext() call. (I’ve included
> the git diff of changes I’ve made locally).
>
>
>
> 2 bundles: jaxrs publisher and my session listener registrator are
> connected to http service:
>
> 2017-06-30T10:46:18,768 | INFO  | pool-3-thread-1  |
> HttpServiceFactoryImpl           | 199 - org.ops4j.pax.web.pax-web-runtime
> - 6.1.0.SNAPSHOT | Binding bundle: [com.eclipsesource.jaxrs.publisher
> [14]] to http service
>
> 2017-06-30T10:46:20,644 | INFO  | pool-3-thread-1  |
> HttpServiceFactoryImpl           | 199 - org.ops4j.pax.web.pax-web-runtime
> - 6.1.0.SNAPSHOT | Binding bundle: [pax-web-configurator [204]] to http
> service
>
>
>
> Jaxrs publisher registers servlet:
>
> 2017-06-30T10:46:20,010 | INFO  | pool-3-thread-1  |
> HttpServiceStarted               | 199 - org.ops4j.pax.web.pax-web-runtime
> - 6.1.0.SNAPSHOT | Register servlet (alias=/services). Using context
> [ContextModel{id=org.ops4j.pax.web.service.spi.model.ContextModel-5,name=,
> httpContext=org.ops4j.pax.web.service.internal.
> DefaultSharedWebContainerContext@f7bb2fe,contextParams={},
> virtualHosts={},connectors={}}]
>
>
>
> My stuff registers session listener and session attribute listener:
>
> 2017-06-30T10:46:20,645 | INFO  | pool-3-thread-1  |
> HttpServiceStarted               | 199 - org.ops4j.pax.web.pax-web-runtime
> - 6.1.0.SNAPSHOT | Register event listener (listener=com.riag.taxcloud.
> datamodel.channel.DatamodelSessionListener@18b607f1). Using context
> [ContextModel{id=org.ops4j.pax.web.service.spi.model.
> ContextModel-11,name=,httpContext=org.ops4j.pax.web.service.internal.
> DefaultSharedWebContainerContext@4f5b090a,contextParams={},
> virtualHosts={},connectors={}}]
>
> 2017-06-30T10:46:20,655 | INFO  | pool-3-thread-1  |
> HttpServiceStarted               | 199 - org.ops4j.pax.web.pax-web-runtime
> - 6.1.0.SNAPSHOT | Register event listener (listener=com.riag.taxcloud.
> datamodel.channel.DatamodelSessionAttributeListener@7e902b64). Using
> context [ContextModel{id=org.ops4j.pax.web.service.spi.model.
> ContextModel-13,name=,httpContext=org.ops4j.pax.web.service.internal.
> DefaultSharedWebContainerContext@56ba6785,contextParams={},
> virtualHosts={},connectors={}}]
>
>
>
> This is how I register/unregister listeners:
>
>        *public* *void* bindSessionListener(HttpSessionListener listener) {
>
>              *LOGGER*.info("bindSessionListener {}", listener);
>
>              webContainer.registerEventListener(listener, *null*);
>
>              //servletContext.addListener(listener); IllegalStateException
>
>        }
>
>
>
>        *public* *void* unbindSessionListener(HttpSessionListener listener)
> {
>
>              *LOGGER*.info("unbindSessionListener {}", listener);
>
>              *if* (listener == *null*)
>
>                     *return*;
>
>              webContainer.unregisterEventListener(listener);
>
>        }
>
>
>
>
>
>        *public* *void* 
> bindSessionAttributeListener(HttpSessionAttributeListener
> listener) {
>
>              *LOGGER*.info("bindSessionAttributeListener {}", listener);
>
>              webContainer.registerEventListener(listener, *null*);
>
>              // servletContext.addListener(listener);
> IllegalStateException
>
>        }
>
>
>
>        *public* *void* 
> unbindSessionAttributeListener(HttpSessionAttributeListener
> listener) {
>
>              *LOGGER*.info("unbindSessionAttributeListener {}", listener);
>
>              *if* (listener == *null*)
>
>                     *return*;
>
>              webContainer.unregisterEventListener(listener);
>
>        }
>
>
>
> <?xml version=*"1.0"* encoding=*"UTF-8"*?>
>
> <blueprint xmlns=*"http://www.osgi.org/xmlns/blueprint/v1.0.0
> <http://www.osgi.org/xmlns/blueprint/v1.0.0>"*
>
>              
> xmlns:ext=*"http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.0.0
> <http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.0.0>"*
>
>              
> xmlns:cm=*"http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0
> <http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0>"*>
>
>
>
>        <bean id=*"paxWebConfigurator"* class=
> *"com.riag.taxcloud.paxweb.configurator.PaxWebSessionConfigurator"*>
>
>                     <property name=*"context"* ref=
> *"blueprintBundleContext"* />
>
>                     <property name=*"webContainer"* ref=*"webContainer"*/>
>
>                     <property name=*"servletConfiguration"* ref=
> *"jaxRsServletConfiguration"*/>
>
>                     <property name=*"servletContext"* ref=
> *"jaxbServletContext"*/>
>
>        </bean>
>
>
>
>        <reference id=*"webContainer"* interface=
> *"org.ops4j.pax.web.service.WebContainer"*/>
>
>
>
>        <reference-list id=*"sessionListeners"* interface=
> *"javax.servlet.http.HttpSessionListener"* availability=*"optional"*>
>
>              <reference-listener bind-method=*"bindSessionListener"*
> unbind-method=*"unbindSessionListener"* ref=*"paxWebConfigurator"* />
>
>        </reference-list>
>
>
>
>        <reference-list id=*"sessionAttributeListeners"* interface=
> *"javax.servlet.http.HttpSessionAttributeListener"* availability=
> *"optional"*>
>
>              <reference-listener bind-method=
> *"bindSessionAttributeListener"* unbind-method=
> *"unbindSessionAttributeListener"* ref=*"paxWebConfigurator"* />
>
>        </reference-list>
>
>
>
> </blueprint>
>
>
>
> However, the session listener is not called when new session is created by
> WebService call. I’ve set a breakpoint within org.eclipse.jetty.server.
> session.AbstractSessionManager.addSession(AbstractSession, boolean) and
> _sessionListeners list is empty.
>
>
>
> Do I get something conceptually wrong? I thought that if both bundles will
> register stuff using the same HttpContext, one of them could register
> listener that would listen to events for servlets created by the second one.
>
> Is the concept of bundles working with different HttpContext somehow
> deeply build-in in pax-web so I can’t change that behavior with such simple
> ‘hack’?
>
>
>
> Anyway, my patch (after cleanup – I’ve increased log level to see what
> happens and commented out the baselining so that I’m able to compile with
> maven) seems to solve the JIRA issue. However I’m not sure if the JIRA
> issue solves any issue, or I lack understanding the concept of ‘shared’ and
> ‘non-shared’ HttpContext in pax-web….
>
>
>
> Best regards,
>
> Lukasz Lech
>
>
>
> --
> --
> ------------------
> OPS4J - http://www.ops4j.org - [email protected]
>
> ---
> You received this message because you are subscribed to the Google Groups
> "OPS4J" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>



-- 

Apache Member
Apache Karaf <http://karaf.apache.org/> Committer & PMC
OPS4J Pax Web <http://wiki.ops4j.org/display/paxweb/Pax+Web/> Committer &
Project Lead
blog <http://notizblog.nierbeck.de/>
Co-Author of Apache Karaf Cookbook <http://bit.ly/1ps9rkS>

Software Architect / Project Manager / Scrum Master

-- 
-- 
------------------
OPS4J - http://www.ops4j.org - [email protected]

--- 
You received this message because you are subscribed to the Google Groups 
"OPS4J" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to