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 2013/11/21 10:09:16 UTC
svn commit: r1544071 -
/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EjbTimerServiceImpl.java
Author: rmannibucau
Date: Thu Nov 21 09:09:16 2013
New Revision: 1544071
URL: http://svn.apache.org/r1544071
Log:
TOMEE-1083 avoid classloading issues when using tccl with quartz
Modified:
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EjbTimerServiceImpl.java
Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EjbTimerServiceImpl.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EjbTimerServiceImpl.java?rev=1544071&r1=1544070&r2=1544071&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EjbTimerServiceImpl.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/core/timer/EjbTimerServiceImpl.java Thu Nov 21 09:09:16 2013
@@ -165,12 +165,14 @@ public class EjbTimerServiceImpl impleme
scheduler = systemInstance.getComponent(Scheduler.class);
if (scheduler == null || newInstance) {
- defaultQuartzConfiguration(properties, deployment, newInstance);
+ final boolean useTccl = "true".equalsIgnoreCase(properties.getProperty(OPENEJB_QUARTZ_USE_TCCL, "false"));
+
+ defaultQuartzConfiguration(properties, deployment, newInstance, useTccl);
try {
// start in container context to avoid thread leaks
final ClassLoader oldCl = Thread.currentThread().getContextClassLoader();
- if ("true".equalsIgnoreCase(properties.getProperty(OPENEJB_QUARTZ_USE_TCCL, "false"))) {
+ if (useTccl) {
Thread.currentThread().setContextClassLoader(deployment.getClassLoader());
} else {
Thread.currentThread().setContextClassLoader(EjbTimerServiceImpl.class.getClassLoader());
@@ -207,7 +209,7 @@ public class EjbTimerServiceImpl impleme
return thisScheduler;
}
- private static void defaultQuartzConfiguration(final Properties properties, final BeanContext deployment, final boolean newInstance) {
+ private static void defaultQuartzConfiguration(final Properties properties, final BeanContext deployment, final boolean newInstance, final boolean tccl) {
final String defaultThreadPool = DefaultTimerThreadPoolAdapter.class.getName();
if (!properties.containsKey(StdSchedulerFactory.PROP_THREAD_POOL_CLASS)) {
properties.put(StdSchedulerFactory.PROP_THREAD_POOL_CLASS, defaultThreadPool);
@@ -241,17 +243,19 @@ public class EjbTimerServiceImpl impleme
}
}
- final String driverDelegate = properties.getProperty("org.quartz.jobStore.driverDelegateClass");
- if (driverDelegate != null && StdJDBCDelegate.class.getName().equals(driverDelegate)) {
- properties.put("org.quartz.jobStore.driverDelegateClass", PatchedStdJDBCDelegate.class.getName());
- } else if (driverDelegate != null) {
- log.info("You use " + driverDelegate + " driver delegate with quartz, ensure it doesn't use ObjectInputStream otherwise your custom TimerData can induce some issues");
- }
+ if (!tccl) {
+ final String driverDelegate = properties.getProperty("org.quartz.jobStore.driverDelegateClass");
+ if (driverDelegate != null && StdJDBCDelegate.class.getName().equals(driverDelegate)) {
+ properties.put("org.quartz.jobStore.driverDelegateClass", PatchedStdJDBCDelegate.class.getName());
+ } else if (driverDelegate != null) {
+ log.info("You use " + driverDelegate + " driver delegate with quartz, ensure it doesn't use ObjectInputStream otherwise your custom TimerData can induce some issues");
+ }
- // adding our custom persister
- if (properties.containsKey("org.quartz.jobStore.class") && !properties.containsKey("org.quartz.jobStore.driverDelegateInitString")) {
- properties.put("org.quartz.jobStore.driverDelegateInitString",
- "triggerPersistenceDelegateClasses=" + EJBCronTriggerPersistenceDelegate.class.getName());
+ // adding our custom persister
+ if (properties.containsKey("org.quartz.jobStore.class") && !properties.containsKey("org.quartz.jobStore.driverDelegateInitString")) {
+ properties.put("org.quartz.jobStore.driverDelegateInitString",
+ "triggerPersistenceDelegateClasses=" + EJBCronTriggerPersistenceDelegate.class.getName());
+ }
}
if (defaultThreadPool.equals(properties.get(StdSchedulerFactory.PROP_THREAD_POOL_CLASS))