[weld-dev] PAX-WEB + PAX-CDI + WELD = Problem scavenging sessions' java.lang.IllegalStateException

Alex Sviridov ooo_saturn7 at mail.ru
Thu Jun 1 03:01:16 EDT 2017


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 at 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 beans for 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/weld-dev/attachments/20170601/70a88b9c/attachment-0001.html 


More information about the weld-dev mailing list