WELD-862 and Seam Cron
by Peter Royle
Hi,
I'm aiming to make a release of Seam Cron available within the next two weeks. Currently there is an outstanding issue (https://issues.jboss.org/browse/WELD-862) which prevents Cron from running properly with Weld. I have been able to carry on developing Cron by testing it against OpenWebBeans, but obviously if we are to release a Seam module it should work against Weld.
It would be nice if WELD-862 could be fixed as soon a possible so that all future versions will work well with Cron.
But more importantly I also probably need to do something special in Cron so that it will work with the version of Weld already deployed in JBoss AS and Glassfish, which will contain the bug. The workaround mentioned in the bug report is to deep copy the InvocationContext. I attempted to do this by serialising and unserialising the InvocationContext but couldn't due to UnserializableExceptions. Does anyone have any advice for me about how I might be able to work around this bug to support existing versions of Weld?
Cheers,
Pete R
2 days, 1 hour
PAX-WEB + PAX-CDI + WELD = Problem scavenging sessions' java.lang.IllegalStateException
by Alex Sviridov
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 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
8 years, 7 months
Interceptor & Interceptors
by Emily Jiang
Hi Martin,
In the updated Interceptor spec, it has the following statement:
"The Interceptor annotation is ignored on interceptor classes bound using
the Interceptors annotation."
I assume this already the case in Weld 2.x, CDI 1.2 implementation. Right?
Many thanks,
Emily
===========================
Emily Jiang
WebSphere Application Server, CDI & MicroProfile Development Lead
MP 211, DE3A20, Winchester, Hampshire, England, SO21 2JN
Phone: +44 (0)1962 816278 Internal: 246278
Email: emijiang(a)uk.ibm.com
Lotus Notes: Emily Jiang/UK/IBM@IBMGB
Unless stated otherwise above:
IBM United Kingdom Limited - Registered in England and Wales with number
741598.
Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU
8 years, 7 months