You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2014/10/04 19:53:09 UTC
svn commit: r1629431 -
/tomee/tomee/branches/tomee-1.7.x/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EjbTimerServiceImpl.java
Author: rmannibucau
Date: Sat Oct 4 17:53:09 2014
New Revision: 1629431
URL: http://svn.apache.org/r1629431
Log:
TOMEE-1379 ensure to commit with app loader
Modified:
tomee/tomee/branches/tomee-1.7.x/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EjbTimerServiceImpl.java
Modified: tomee/tomee/branches/tomee-1.7.x/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EjbTimerServiceImpl.java
URL: http://svn.apache.org/viewvc/tomee/tomee/branches/tomee-1.7.x/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EjbTimerServiceImpl.java?rev=1629431&r1=1629430&r2=1629431&view=diff
==============================================================================
--- tomee/tomee/branches/tomee-1.7.x/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EjbTimerServiceImpl.java (original)
+++ tomee/tomee/branches/tomee-1.7.x/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EjbTimerServiceImpl.java Sat Oct 4 17:53:09 2014
@@ -758,6 +758,8 @@ public class EjbTimerServiceImpl impleme
*/
@SuppressWarnings("ReturnInsideFinallyBlock")
public void ejbTimeout(final TimerData timerData) {
+ final Thread thread = Thread.currentThread();
+ final ClassLoader loader = thread.getContextClassLoader(); // container loader
try {
Timer timer = getTimer(timerData.getId());
// quartz can be backed by some advanced config (jdbc for instance)
@@ -793,6 +795,10 @@ public class EjbTimerServiceImpl impleme
return;
}
+ // if app registered Synchronization we need it for commit()/rollback()
+ // so forcing it and not relying on container for it
+ thread.setContextClassLoader(deployment.getClassLoader() != null ? deployment.getClassLoader() : loader);
+
SetAccessible.on(ejbTimeout);
container.invoke(deployment.getDeploymentID(),
InterfaceType.TIMEOUT,
@@ -849,6 +855,8 @@ public class EjbTimerServiceImpl impleme
log.warning("Error occured while calling ejbTimeout", e);
throw e;
} finally {
+ thread.setContextClassLoader(loader);
+
// clean up the timer store
//TODO shall we do all this via Quartz listener ???
if (timerData.getType() == TimerType.SingleAction) {