Author: rmannibucau
Date: Mon Mar 4 10:59:42 2013
New Revision: 1452249
URL: http://svn.apache.org/r1452249
Log:
TOMEE-781 -Dopenejb.quartz.use-TCCL=true has no effect
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=1452249&r1=1452248&r2=1452249&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
Mon Mar 4 10:59:42 2013
@@ -153,69 +153,64 @@ public class EjbTimerServiceImpl impleme
putAll(properties, deployment.getProperties());
// custom config -> don't use default scheduler
- boolean newInstance = false;
- for (final String key : properties.stringPropertyNames()) {
- if (key.startsWith("org.quartz.")) {
- newInstance = true;
- break;
- }
- }
+ final boolean newInstance = properties.size() > 0;
final SystemInstance systemInstance = SystemInstance.get();
- final String defaultThreadPool =
DefaultTimerThreadPoolAdapter.class.getName();
- if
(!properties.containsKey(StdSchedulerFactory.PROP_THREAD_POOL_CLASS)) {
- properties.put(StdSchedulerFactory.PROP_THREAD_POOL_CLASS,
defaultThreadPool);
- }
- if
(!properties.containsKey(StdSchedulerFactory.PROP_SCHED_INSTANCE_NAME)) {
- properties.put(StdSchedulerFactory.PROP_SCHED_INSTANCE_NAME,
"OpenEJB-TimerService-Scheduler");
- }
- if
(!properties.containsKey(StdSchedulerFactory.PROP_SCHED_SKIP_UPDATE_CHECK)) {
-
properties.put(StdSchedulerFactory.PROP_SCHED_SKIP_UPDATE_CHECK, "true");
- }
- if
(!properties.containsKey("org.terracotta.quartz.skipUpdateCheck")) {
- properties.put("org.terracotta.quartz.skipUpdateCheck",
"true");
- }
- if
(!properties.containsKey(StdSchedulerFactory.PROP_SCHED_INTERRUPT_JOBS_ON_SHUTDOWN))
{
-
properties.put(StdSchedulerFactory.PROP_SCHED_INTERRUPT_JOBS_ON_SHUTDOWN,
"true");
- }
- if
(!properties.containsKey(StdSchedulerFactory.PROP_SCHED_INTERRUPT_JOBS_ON_SHUTDOWN_WITH_WAIT))
{
-
properties.put(StdSchedulerFactory.PROP_SCHED_INTERRUPT_JOBS_ON_SHUTDOWN_WITH_WAIT,
"true");
- }
- if (!properties.containsKey(QUARTZ_MAKE_SCHEDULER_THREAD_DAEMON)) {
- properties.put(QUARTZ_MAKE_SCHEDULER_THREAD_DAEMON, "true");
- }
- if (!properties.containsKey(QUARTZ_JMX) &&
LocalMBeanServer.isJMXActive()) {
- properties.put(QUARTZ_JMX, "true");
- }
- if
(!properties.containsKey(StdSchedulerFactory.PROP_SCHED_INSTANCE_ID)) {
- if (!newInstance) {
-
properties.setProperty(StdSchedulerFactory.PROP_SCHED_INSTANCE_ID, "OpenEJB");
- } else {
-
properties.setProperty(StdSchedulerFactory.PROP_SCHED_INSTANCE_ID,
deployment.getDeploymentID().toString());
- }
- }
-
- // 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());
- }
+ scheduler = systemInstance.getComponent(Scheduler.class);
- if
(defaultThreadPool.equals(properties.get(StdSchedulerFactory.PROP_THREAD_POOL_CLASS))
- && properties.containsKey("org.quartz.threadPool.threadCount")
- &&
!properties.containsKey(DefaultTimerThreadPoolAdapter.OPENEJB_TIMER_POOL_SIZE))
{
- log.info("Found property 'org.quartz.threadPool.threadCount'
for default thread pool, please use '"
- +
DefaultTimerThreadPoolAdapter.OPENEJB_TIMER_POOL_SIZE + "' instead");
- }
+ if (scheduler == null || newInstance) {
+ final String defaultThreadPool =
DefaultTimerThreadPoolAdapter.class.getName();
+ if
(!properties.containsKey(StdSchedulerFactory.PROP_THREAD_POOL_CLASS)) {
+ properties.put(StdSchedulerFactory.PROP_THREAD_POOL_CLASS,
defaultThreadPool);
+ }
+ if
(!properties.containsKey(StdSchedulerFactory.PROP_SCHED_INSTANCE_NAME)) {
+
properties.put(StdSchedulerFactory.PROP_SCHED_INSTANCE_NAME,
"OpenEJB-TimerService-Scheduler");
+ }
+ if
(!properties.containsKey(StdSchedulerFactory.PROP_SCHED_SKIP_UPDATE_CHECK)) {
+
properties.put(StdSchedulerFactory.PROP_SCHED_SKIP_UPDATE_CHECK, "true");
+ }
+ if
(!properties.containsKey("org.terracotta.quartz.skipUpdateCheck")) {
+ properties.put("org.terracotta.quartz.skipUpdateCheck",
"true");
+ }
+ if
(!properties.containsKey(StdSchedulerFactory.PROP_SCHED_INTERRUPT_JOBS_ON_SHUTDOWN))
{
+
properties.put(StdSchedulerFactory.PROP_SCHED_INTERRUPT_JOBS_ON_SHUTDOWN,
"true");
+ }
+ if
(!properties.containsKey(StdSchedulerFactory.PROP_SCHED_INTERRUPT_JOBS_ON_SHUTDOWN_WITH_WAIT))
{
+
properties.put(StdSchedulerFactory.PROP_SCHED_INTERRUPT_JOBS_ON_SHUTDOWN_WITH_WAIT,
"true");
+ }
+ if
(!properties.containsKey(QUARTZ_MAKE_SCHEDULER_THREAD_DAEMON)) {
+ properties.put(QUARTZ_MAKE_SCHEDULER_THREAD_DAEMON,
"true");
+ }
+ if (!properties.containsKey(QUARTZ_JMX) &&
LocalMBeanServer.isJMXActive()) {
+ properties.put(QUARTZ_JMX, "true");
+ }
+ if
(!properties.containsKey(StdSchedulerFactory.PROP_SCHED_INSTANCE_ID)) {
+ if (!newInstance) {
+
properties.setProperty(StdSchedulerFactory.PROP_SCHED_INSTANCE_ID, "OpenEJB");
+ } else {
+
properties.setProperty(StdSchedulerFactory.PROP_SCHED_INSTANCE_ID,
deployment.getDeploymentID().toString());
+ }
+ }
- // to ensure we can shutdown correctly, default doesn't support
such a configuration
- if
(!properties.getProperty(StdSchedulerFactory.PROP_JOB_STORE_CLASS,
RAMJobStore.class.getName()).equals(RAMJobStore.class.getName())) {
- properties.put("org.quartz.jobStore.makeThreadsDaemons",
properties.getProperty("org.quartz.jobStore.makeThreadsDaemon", "true"));
- }
+ // 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))
+ &&
properties.containsKey("org.quartz.threadPool.threadCount")
+ &&
!properties.containsKey(DefaultTimerThreadPoolAdapter.OPENEJB_TIMER_POOL_SIZE))
{
+ log.info("Found property
'org.quartz.threadPool.threadCount' for default thread pool, please use '"
+ +
DefaultTimerThreadPoolAdapter.OPENEJB_TIMER_POOL_SIZE + "' instead");
+ }
+
+ // to ensure we can shutdown correctly, default doesn't
support such a configuration
+ if
(!properties.getProperty(StdSchedulerFactory.PROP_JOB_STORE_CLASS,
RAMJobStore.class.getName()).equals(RAMJobStore.class.getName())) {
+ properties.put("org.quartz.jobStore.makeThreadsDaemons",
properties.getProperty("org.quartz.jobStore.makeThreadsDaemon", "true"));
+ }
- scheduler = systemInstance.getComponent(Scheduler.class);
- if (scheduler == null || newInstance) {
try {
// start in container context to avoid thread leaks
final ClassLoader oldCl =
Thread.currentThread().getContextClassLoader();
@@ -257,7 +252,10 @@ public class EjbTimerServiceImpl impleme
private static void putAll(final Properties a, final Properties b) {
for (final Map.Entry<Object, Object> entry : b.entrySet()) {
final String key = entry.getKey().toString();
- if (key.startsWith("org.quartz.")) {
+ if (key.startsWith("org.quartz.")
+ || key.startsWith("openejb.quartz.")
+ ||
DefaultTimerThreadPoolAdapter.OPENEJB_TIMER_POOL_SIZE.equals(key)
+ || "org.terracotta.quartz.skipUpdateCheck".equals(key)) {
a.put(entry.getKey(), entry.getValue());
}
}