Repository: tomee
Updated Branches:
  refs/heads/tomee-1.7.x d00201397 -> 50c306e14


#TOMEE-1489 - Add scheduler support for kahadb


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/50c306e1
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/50c306e1
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/50c306e1

Branch: refs/heads/tomee-1.7.x
Commit: 50c306e14bf4eee6b613bc719310a4e5696e79ba
Parents: d002013
Author: andygumbrecht <[email protected]>
Authored: Thu Jan 8 13:52:11 2015 +0100
Committer: andygumbrecht <[email protected]>
Committed: Thu Jan 8 13:52:28 2015 +0100

----------------------------------------------------------------------
 .../resource/activemq/ActiveMQ5Factory.java     | 51 ++++++++++++--------
 1 file changed, 30 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/50c306e1/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/ActiveMQ5Factory.java
----------------------------------------------------------------------
diff --git 
a/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/ActiveMQ5Factory.java
 
b/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/ActiveMQ5Factory.java
index 145b18c..bf52201 100644
--- 
a/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/ActiveMQ5Factory.java
+++ 
b/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/ActiveMQ5Factory.java
@@ -70,12 +70,18 @@ public class ActiveMQ5Factory implements 
BrokerFactoryHandler {
         if (null == broker || !broker.isStarted()) {
 
             final Properties properties = getLowerCaseProperties();
+            boolean scheduleSupport = false;
 
             final URISupport.CompositeData compositeData = 
URISupport.parseComposite(new URI(brokerURI.getRawSchemeSpecificPart()));
             final Map<String, String> params = new HashMap<String, 
String>(compositeData.getParameters());
             final PersistenceAdapter persistenceAdapter;
             if ("true".equals(params.remove("usekahadb"))) {
                 persistenceAdapter = 
createPersistenceAdapter("org.apache.activemq.store.kahadb.KahaDBPersistenceAdapter",
 "kahadb", params);
+
+                if ("true".equals(params.remove("scheduler"))) {
+                    scheduleSupport = true;
+                }
+
             } else if ("true".equals(params.remove("useleveldb"))) {
                 persistenceAdapter = 
createPersistenceAdapter("org.apache.activemq.store.leveldb.LevelDBPersistenceAdapter",
 "leveldb", params);
             } else if (params.get("persistenceadapter") != null) {
@@ -94,7 +100,7 @@ public class ActiveMQ5Factory implements 
BrokerFactoryHandler {
                 // if user didn't set persistent to true then 
setPersistenceAdapter() alone is ignored so forcing it with the factory
                 broker.setPersistenceFactory(new 
ProvidedPersistenceAdapterPersistenceAdapterFactory(persistenceAdapter));
                 broker.setPersistent(true);
-                tomeeConfig(broker);
+                tomeeConfig(broker, scheduleSupport);
             } else {
                 final boolean notXbean = 
!uri.getScheme().toLowerCase().startsWith("xbean");
                 if (notXbean) {
@@ -120,7 +126,7 @@ public class ActiveMQ5Factory implements 
BrokerFactoryHandler {
                                 final Object obj = 
context.lookup("openejb/Resource/" + resouceId);
                                 if (!(obj instanceof DataSource)) {
                                     throw new 
IllegalArgumentException("Resource with id " + resouceId
-                                        + " is not a DataSource, but is " + 
obj.getClass().getName());
+                                            + " is not a DataSource, but is " 
+ obj.getClass().getName());
                                 }
                                 dataSource = (DataSource) obj;
                             } catch (final NamingException e) {
@@ -149,7 +155,7 @@ public class ActiveMQ5Factory implements 
BrokerFactoryHandler {
                         broker.setPersistenceAdapter(new 
MemoryPersistenceAdapter());
                     }
 
-                    tomeeConfig(broker);
+                    tomeeConfig(broker, scheduleSupport);
                 }
             }
 
@@ -172,9 +178,9 @@ public class ActiveMQ5Factory implements 
BrokerFactoryHandler {
                         //Start before returning - this is known to be safe.
                         if (!bs.isStarted()) {
                             Logger
-                                .getInstance(LogCategory.OPENEJB_STARTUP, 
ActiveMQ5Factory.class)
-                                .getChildLogger("service")
-                                .info("Starting ActiveMQ BrokerService");
+                                    .getInstance(LogCategory.OPENEJB_STARTUP, 
ActiveMQ5Factory.class)
+                                    .getChildLogger("service")
+                                    .info("Starting ActiveMQ BrokerService");
                             bs.start();
                         }
 
@@ -182,9 +188,9 @@ public class ActiveMQ5Factory implements 
BrokerFactoryHandler {
 
                         //Force a checkpoint to initialize pools
                         Logger
-                            .getInstance(LogCategory.OPENEJB_STARTUP, 
ActiveMQ5Factory.class)
-                            .getChildLogger("service")
-                            .info("Starting ActiveMQ checkpoint");
+                                .getInstance(LogCategory.OPENEJB_STARTUP, 
ActiveMQ5Factory.class)
+                                .getChildLogger("service")
+                                .info("Starting ActiveMQ checkpoint");
                         bs.getPersistenceAdapter().checkpoint(true);
                         started.set(true);
 
@@ -213,9 +219,9 @@ public class ActiveMQ5Factory implements 
BrokerFactoryHandler {
             try {
                 timeout = 
Integer.parseInt(properties.getProperty("startuptimeout", "30000"));
                 Logger
-                    .getInstance(LogCategory.OPENEJB_STARTUP, 
ActiveMQ5Factory.class)
-                    .getChildLogger("service")
-                    .info("Using ActiveMQ startup timeout of " + timeout + 
"ms");
+                        .getInstance(LogCategory.OPENEJB_STARTUP, 
ActiveMQ5Factory.class)
+                        .getChildLogger("service")
+                        .info("Using ActiveMQ startup timeout of " + timeout + 
"ms");
             } catch (final Throwable e) {
                 //Ignore
             }
@@ -231,14 +237,14 @@ public class ActiveMQ5Factory implements 
BrokerFactoryHandler {
 
             if (null != throwable) {
                 Logger.getInstance(LogCategory.OPENEJB_STARTUP, 
ActiveMQ5Factory.class).getChildLogger("service").error("ActiveMQ failed to 
start broker",
-                    throwable);
+                        throwable);
             } else if (started.get()) {
                 Logger.getInstance(LogCategory.OPENEJB_STARTUP, 
ActiveMQ5Factory.class).getChildLogger("service").info("ActiveMQ broker 
started");
             } else {
                 Logger
-                    .getInstance(LogCategory.OPENEJB_STARTUP, 
ActiveMQ5Factory.class)
-                    .getChildLogger("service")
-                    .warning("ActiveMQ failed to start broker within " + 
timeout + " seconds - It may be unusable");
+                        .getInstance(LogCategory.OPENEJB_STARTUP, 
ActiveMQ5Factory.class)
+                        .getChildLogger("service")
+                        .warning("ActiveMQ failed to start broker within " + 
timeout + " seconds - It may be unusable");
             }
 
         }
@@ -284,21 +290,24 @@ public class ActiveMQ5Factory implements 
BrokerFactoryHandler {
         return persistenceAdapter;
     }
 
-    private void tomeeConfig(final BrokerService broker) {
+    private void tomeeConfig(final BrokerService broker, final boolean 
scheduleSupport) {
         //New since 5.4.x
-        disableScheduler(broker);
+        setSchedulerSupport(broker, scheduleSupport);
 
         //Notify when an error occurs on shutdown.
         
broker.setUseLoggingForShutdownErrors(Logger.getInstance(LogCategory.OPENEJB_STARTUP,
 ActiveMQ5Factory.class).isErrorEnabled());
     }
 
-    private static void disableScheduler(final BrokerService broker) {
+    private static void setSchedulerSupport(final BrokerService broker, final 
boolean scheduleSupport) {
         try {
             final Class<?> clazz = 
Class.forName("org.apache.activemq.broker.BrokerService");
             final Method method = clazz.getMethod("setSchedulerSupport", new 
Class[]{Boolean.class});
-            method.invoke(broker, Boolean.FALSE);
+            method.invoke(broker, scheduleSupport);
         } catch (final Throwable e) {
-            //Ignore
+            if (scheduleSupport) {
+                final Logger logger = 
Logger.getInstance(LogCategory.OPENEJB_STARTUP, ActiveMQ5Factory.class);
+                logger.error("Failed to activate scheduler support", e);
+            }
         }
     }
 

Reply via email to