Hi Alex, what does Bundle.update actually do? Is the HTTP session destroyed? Are the HttpSessionListener instances thrown away?
It looks like the Weld container is restarted but the Weld listener is reused and thus is referencing the previous container which is cleaned up and shutdown. Martin Dne 1.6.2017 v 09:01 Alex Sviridov napsal(a): > Hi all > > The question is about using Pax-Web (osgi servlet container) + Pax-Cdi + > Weld. > There is a bug in pax-web https://ops4j1.jira.com/browse/PAXWEB-760 than > can't > be fixed about 2.5 year. And it seems that it is linked with weld. So I post > my question here - maybe someone of weld developers can give any hints, > ideas > etc that can help us. So, the situation. > > Configuration: jetty 9.3.11.v20160721, weld 2.2.12.Final, pax-cdi > 0.13.0-SNAPSHOT, > pax-swissbox 1.8.0 , pax-web 6.0.0-SNAPSHOT.We must have a war bundle with > servlet + cdi bean. In servlet we do > > private void processRequest(HttpServletRequest request, HttpServletResponse > response){ > HttpSession session = request.getSession(); > session.setMaxInactiveInterval(60);//Note, these are seconds. > ....call some cdi bean method > } > > The problem appears when we update war bundle on osgi when there is a > live session. > So, timing is very important here. What we do by steps and time: > hr:min:sec > 1) at 00:00:00 we start our war bundle > 2) at 00:00:10 we make the first http request to our servlet with cdi > bean call > 3) at 00:00:30 we update our war bundle on osgi (Bundle.update) > 4) at 00:00:40 we make the second http request to our servlet with cdi > bean call > 5) at 00:01:40 we get the following exception: > > 2016-08-28 16:40:53,385 | WARN | er@57af3ea4Timer | 39 - > org.ops4j.pax.web.pax-web-jetty - 6.0.0.SNAPSHOT | > org.ops4j.pax.web.service.jetty.internal.LateInvalidatingHashSessionManager | > Problem scavenging sessions > java.lang.RuntimeException: Error accessing invisible AbstractSession method > via reflection > at > org.ops4j.pax.web.service.jetty.internal.LateInvalidatingHashSessionManager.sessionTimeout(LateInvalidatingHashSessionManager.java:169) > at > org.ops4j.pax.web.service.jetty.internal.LateInvalidatingHashSessionManager.scavenge(LateInvalidatingHashSessionManager.java:82) > at > org.eclipse.jetty.server.session.HashSessionManager$Scavenger.run(HashSessionManager.java:84) > at > java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) > at java.util.concurrent.FutureTask.run(FutureTask.java:266) > at > java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) > at > java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) > at java.lang.Thread.run(Thread.java:745) > Caused by: java.lang.reflect.InvocationTargetException > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:497) > at > org.ops4j.pax.web.service.jetty.internal.LateInvalidatingHashSessionManager.sessionTimeout(LateInvalidatingHashSessionManager.java:166) > ... 9 more > Caused by: org.jboss.weld.exceptions.UnsatisfiedResolutionException: > WELD-001308: Unable to resolve any beansfor Type:class > org.jboss.weld.context.http.HttpSessionDestructionContext; Qualifiers: [] > at org.jboss.weld.bean.builtin.InstanceImpl.get(InstanceImpl.java:101) > at > org.jboss.weld.servlet.HttpContextLifecycle.getSessionDestructionContext(HttpContextLifecycle.java:112) > at > org.jboss.weld.servlet.HttpContextLifecycle.deactivateSessionDestructionContext(HttpContextLifecycle.java:172) > at > org.jboss.weld.servlet.HttpContextLifecycle.sessionDestroyed(HttpContextLifecycle.java:153) > at > org.jboss.weld.servlet.WeldInitialListener.sessionDestroyed(WeldInitialListener.java:144) > at > org.jboss.weld.servlet.api.helpers.ForwardingServletListener.sessionDestroyed(ForwardingServletListener.java:50) > at > org.eclipse.jetty.server.session.AbstractSessionManager.removeSession(AbstractSessionManager.java:794) > at > org.eclipse.jetty.server.session.AbstractSession.timeout(AbstractSession.java:310) > ... 14 more > > > Any help is highly appreciated. > > Best regards, Alex Sviridov > > > > _______________________________________________ > weld-dev mailing list > [email protected] > https://lists.jboss.org/mailman/listinfo/weld-dev > -- Martin Kouba Senior Software Engineer Red Hat, Czech Republic _______________________________________________ weld-dev mailing list [email protected] https://lists.jboss.org/mailman/listinfo/weld-dev
