[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