Author: andygumbrecht
Date: Wed Nov 14 16:30:30 2012
New Revision: 1409248

URL: http://svn.apache.org/viewvc?rev=1409248&view=rev
Log:
Sidestep thread creation in 
org.apache.activemq.ra.ActiveMQResourceAdapter.start with our own.

Modified:
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/ActiveMQ5Factory.java
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/ActiveMQFactory.java
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/ActiveMQResourceAdapter.java

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/ActiveMQ5Factory.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/ActiveMQ5Factory.java?rev=1409248&r1=1409247&r2=1409248&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/ActiveMQ5Factory.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/ActiveMQ5Factory.java
 Wed Nov 14 16:30:30 2012
@@ -50,7 +50,7 @@ public class ActiveMQ5Factory implements
     @Override
     public synchronized BrokerService createBroker(final URI brokerURI) throws 
Exception {
 
-        
org.apache.openejb.util.Logger.getInstance(LogCategory.OPENEJB_STARTUP, 
"service").info("ActiveMQ5Factory creating broker: " + 
Thread.currentThread().getName());
+        
org.apache.openejb.util.Logger.getInstance(LogCategory.OPENEJB_STARTUP, 
ActiveMQ5Factory.class).getChildLogger("service").info("ActiveMQ5Factory 
creating broker");
 
         BrokerService broker = brokers.get(brokerURI);
 
@@ -124,6 +124,8 @@ public class ActiveMQ5Factory implements
                 @Override
                 public void run() {
 
+                    
Thread.currentThread().setContextClassLoader(org.apache.activemq.ra.ActiveMQResourceAdapter.class.getClassLoader());
+
                     try {
                         //Start before returning - this is known to be safe.
                         if (!bs.isStarted()) {

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/ActiveMQFactory.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/ActiveMQFactory.java?rev=1409248&r1=1409247&r2=1409248&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/ActiveMQFactory.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/ActiveMQFactory.java
 Wed Nov 14 16:30:30 2012
@@ -113,7 +113,7 @@ public class ActiveMQFactory {
         }
     }
 
-    public BrokerService createBroker(final URI brokerURI) throws Exception {
+    public static BrokerService createBroker(final URI brokerURI) throws 
Exception {
 
         ActiveMQFactory.init();
 

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/ActiveMQResourceAdapter.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/ActiveMQResourceAdapter.java?rev=1409248&r1=1409247&r2=1409248&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/ActiveMQResourceAdapter.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/activemq/ActiveMQResourceAdapter.java
 Wed Nov 14 16:30:30 2012
@@ -31,11 +31,13 @@ import java.util.Iterator;
 import java.util.Properties;
 import java.util.concurrent.TimeUnit;
 
+@SuppressWarnings("UnusedDeclaration")
 public class ActiveMQResourceAdapter extends 
org.apache.activemq.ra.ActiveMQResourceAdapter {
 
     private String dataSource;
     private String useDatabaseLock;
     private String startupTimeout = "60000";
+    private BootstrapContext bootstrapContext = null;
 
     public String getDataSource() {
         return dataSource;
@@ -65,76 +67,14 @@ public class ActiveMQResourceAdapter ext
         super.setServerUrl(url);
     }
 
-    //   DMB:  Work in progress.  These all should go into the service-jar.xml
-//   Sources of info:
-//         - http://activemq.apache.org/resource-adapter-properties.html
-//         - 
http://activemq.apache.org/camel/maven/camel-core/apidocs/org/apache/camel/processor/RedeliveryPolicy.html
-//
-//    /**
-//     * 100    The maximum number of messages sent to a consumer on a durable 
topic until acknowledgements are received
-//     * @param integer
-//     */
-//    public void setDurableTopicPrefetch(Integer integer) {
-//        super.setDurableTopicPrefetch(integer);
-//    }
-//
-//    /**
-//     * 1000   The delay before redeliveries start. Also configurable on the 
ActivationSpec.
-//     * @param aLong
-//     */
-//    public void setInitialRedeliveryDelay(Long aLong) {
-//        super.setInitialRedeliveryDelay(aLong);
-//    }
-//
-//    /**
-//     * 100    The maximum number of messages sent to a consumer on a JMS 
stream until acknowledgements are received
-//     * @param integer
-//     */
-//    public void setInputStreamPrefetch(Integer integer) {
-//        super.setInputStreamPrefetch(integer);
-//    }
-//
-//    /**
-//     * 5      The maximum number of redeliveries or -1 for no maximum. Also 
configurable on the ActivationSpec.
-//     * @param integer
-//     */
-//    public void setMaximumRedeliveries(Integer integer) {
-//        super.setMaximumRedeliveries(integer);
-//    }
-//
-//    public void setQueueBrowserPrefetch(Integer integer) {
-//        super.setQueueBrowserPrefetch(integer);
-//    }
-//
-//    /**
-//     * 1000   The maximum number of messages sent to a consumer on a queue 
until acknowledgements are received
-//     * @param integer
-//     */
-//    public void setQueuePrefetch(Integer integer) {
-//        super.setQueuePrefetch(integer);
-//    }
-//
-//    /**
-//     * 5      The multiplier to use if exponential back off is enabled. Also 
configurable on the ActivationSpec.
-//     * @param aShort
-//     */
-//    public void setRedeliveryBackOffMultiplier(Short aShort) {
-//        super.setRedeliveryBackOffMultiplier(aShort);
-//    }
-//
-//    public void setRedeliveryUseExponentialBackOff(Boolean aBoolean) {
-//        super.setRedeliveryUseExponentialBackOff(aBoolean);
-//    }
-//
-//    /**
-//     * 32766  The maximum number of messages sent to a consumer on a 
non-durable topic until acknowledgements are received
-//     * @param integer
-//     */
-//    public void setTopicPrefetch(Integer integer) {
-//        super.setTopicPrefetch(integer);
-//    }
     @Override
     public void start(final BootstrapContext bootstrapContext) throws 
ResourceAdapterInternalException {
+
+        this.bootstrapContext = bootstrapContext;
+        final String brokerXmlConfig = getBrokerXmlConfig();
+        super.setBrokerXmlConfig(null);
+        super.start(bootstrapContext);
+
         final Properties properties = new Properties();
 
         if (null != this.dataSource) {
@@ -150,7 +90,6 @@ public class ActiveMQResourceAdapter ext
         }
 
         // prefix server uri with 'broker:' so our broker factory is used
-        final String brokerXmlConfig = getBrokerXmlConfig();
         if (brokerXmlConfig != null) {
 
             try {
@@ -182,7 +121,11 @@ public class ActiveMQResourceAdapter ext
         ActiveMQFactory.setThreadProperties(properties);
 
         try {
-            super.start(bootstrapContext);
+
+            
ActiveMQFactory.createBroker(URI.create(getBrokerXmlConfig())).start();
+            //super.start(bootstrapContext);
+        } catch (Exception e) {
+            
org.apache.openejb.util.Logger.getInstance(LogCategory.OPENEJB_STARTUP, 
ActiveMQResourceAdapter.class).getChildLogger("service").fatal("Failed to start 
ActiveMQ", e);
         } finally {
             ActiveMQFactory.setThreadProperties(null);
 
@@ -194,9 +137,14 @@ public class ActiveMQResourceAdapter ext
     }
 
     @Override
+    public BootstrapContext getBootstrapContext() {
+        return this.bootstrapContext;
+    }
+
+    @Override
     public void stop() {
 
-        
org.apache.openejb.util.Logger.getInstance(LogCategory.OPENEJB_STARTUP, 
"org.apache.openejb.util.resources").info("Stopping ActiveMQ");
+        
org.apache.openejb.util.Logger.getInstance(LogCategory.OPENEJB_STARTUP, 
ActiveMQResourceAdapter.class).getChildLogger("service").info("Stopping 
ActiveMQ");
 
         final Thread stopThread = new Thread("ActiveMQResourceAdapter stop") {
 
@@ -205,7 +153,7 @@ public class ActiveMQResourceAdapter ext
                 try {
                     stopImpl();
                 } catch (Throwable t) {
-                    
org.apache.openejb.util.Logger.getInstance(LogCategory.OPENEJB_STARTUP, 
"org.apache.openejb.util.resources").error("ActiveMQ shutdown failed", t);
+                    
org.apache.openejb.util.Logger.getInstance(LogCategory.OPENEJB_STARTUP, 
ActiveMQResourceAdapter.class).getChildLogger("service").error("ActiveMQ 
shutdown failed", t);
                 }
             }
         };
@@ -225,7 +173,7 @@ public class ActiveMQResourceAdapter ext
             //Block for a maximum of timeout milliseconds waiting for this 
thread to die.
             stopThread.join(timeout);
         } catch (InterruptedException ex) {
-            
org.apache.openejb.util.Logger.getInstance(LogCategory.OPENEJB_STARTUP, 
"org.apache.openejb.util.resources").warning("Gave up on ActiveMQ shutdown 
after " + timeout + "ms", ex);
+            
org.apache.openejb.util.Logger.getInstance(LogCategory.OPENEJB_STARTUP, 
ActiveMQResourceAdapter.class).getChildLogger("service").warning("Gave up on 
ActiveMQ shutdown after " + timeout + "ms", ex);
         }
     }
 
@@ -254,7 +202,7 @@ public class ActiveMQResourceAdapter ext
 
         stopScheduler();
 
-        
org.apache.openejb.util.Logger.getInstance(LogCategory.OPENEJB_STARTUP, 
"org.apache.openejb.util.resources").info("Stopped ActiveMQ broker");
+        
org.apache.openejb.util.Logger.getInstance(LogCategory.OPENEJB_STARTUP, 
ActiveMQResourceAdapter.class).getChildLogger("service").info("Stopped ActiveMQ 
broker");
     }
 
     private static void stopScheduler() {


Reply via email to