Author: gnodet
Date: Fri May 16 06:38:29 2008
New Revision: 657059

URL: http://svn.apache.org/viewvc?rev=657059&view=rev
Log:
AMQ-1733: Add an option to allow the xbean broker to destroy the spring 
application context when the broker is stopped

Modified:
    
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/xbean/XBeanBrokerService.java
    activemq/trunk/activemq-core/src/main/resources/activemq.xsd
    activemq/trunk/activemq-core/src/main/resources/activemq.xsd.html
    activemq/trunk/activemq-core/src/main/resources/activemq.xsd.wiki

Modified: 
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/xbean/XBeanBrokerService.java
URL: 
http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/xbean/XBeanBrokerService.java?rev=657059&r1=657058&r2=657059&view=diff
==============================================================================
--- 
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/xbean/XBeanBrokerService.java
 (original)
+++ 
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/xbean/XBeanBrokerService.java
 Fri May 16 06:38:29 2008
@@ -22,6 +22,7 @@
 import org.springframework.beans.factory.InitializingBean;
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.ApplicationContextAware;
+import org.springframework.context.ConfigurableApplicationContext;
 
 /**
  * An ActiveMQ Message Broker. It consists of a number of transport
@@ -41,6 +42,7 @@
 
     private boolean start = true;
     private ApplicationContext applicationContext = null;
+    private boolean destroyApplicationContextOnShutdown = false;
 
     public XBeanBrokerService() {
     }
@@ -49,6 +51,15 @@
         if (start) {
             start();
         }
+        if (destroyApplicationContextOnShutdown) {
+            addShutdownHook(new Runnable() {
+                public void run() {
+                    if (applicationContext instanceof 
ConfigurableApplicationContext) {
+                           ((ConfigurableApplicationContext) 
applicationContext).close();
+                    }
+                }
+            });
+        }
     }
 
     public void destroy() throws Exception {
@@ -68,6 +79,14 @@
         this.start = start;
     }
 
+    /**
+     * Sets whether the broker should shutdown the ApplicationContext when the 
broker is stopped.
+     * The broker can be stopped because the underlying JDBC store is 
unavailable for example.
+     */
+    public void setDestroyApplicationContextOnShutdown(boolean destroy) {
+        this.destroyApplicationContextOnShutdown = destroy;
+    }
+
        public void setApplicationContext(ApplicationContext applicationContext)
                        throws BeansException {
                this.applicationContext = applicationContext;

Modified: activemq/trunk/activemq-core/src/main/resources/activemq.xsd
URL: 
http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/resources/activemq.xsd?rev=657059&r1=657058&r2=657059&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/main/resources/activemq.xsd (original)
+++ activemq/trunk/activemq-core/src/main/resources/activemq.xsd Fri May 16 
06:38:29 2008
@@ -824,6 +824,14 @@
           ]]></xs:documentation>
         </xs:annotation>
       </xs:attribute>
+      <xs:attribute name='destroyApplicationContextOnShutdown' 
type='xs:boolean'>
+        <xs:annotation>
+          <xs:documentation><![CDATA[
+            Sets whether the broker should shutdown the ApplicationContext 
when the broker is stopped.
+The broker can be stopped because the underlying JDBC store is unavailable for 
example.
+          ]]></xs:documentation>
+        </xs:annotation>
+      </xs:attribute>
       <xs:attribute name='supportFailOver' type='xs:boolean'/>
       <xs:attribute name='systemExitOnShutdown' type='xs:boolean'/>
       <xs:attribute name='systemExitOnShutdownExitCode' type='xs:integer'/>

Modified: activemq/trunk/activemq-core/src/main/resources/activemq.xsd.html
URL: 
http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/resources/activemq.xsd.html?rev=657059&r1=657058&r2=657059&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/main/resources/activemq.xsd.html (original)
+++ activemq/trunk/activemq-core/src/main/resources/activemq.xsd.html Fri May 
16 06:38:29 2008
@@ -401,6 +401,8 @@
   <tr><td>dedicatedTaskRunner</td><td>xs:boolean</td><td></td></tr>
   <tr><td>deleteAllMessagesOnStartup</td><td>xs:boolean</td><td>Sets whether 
or not all messages are deleted on startup - mostly only
 useful for testing.</td></tr>
+  <tr><td>destroyApplicationContextOnShutdown</td><td>xs:boolean</td><td>      
Sets whether the broker should shutdown the ApplicationContext when the broker 
is stopped.
+The broker can be stopped because the underlying JDBC store is unavailable for 
example.</td></tr>
   <tr><td>enableStatistics</td><td>xs:boolean</td><td>Sets whether or not the 
Broker's services enable statistics or not.</td></tr>
   <tr><td>keepDurableSubsActive</td><td>xs:boolean</td><td></td></tr>
   <tr><td>masterConnectorURI</td><td>xs:string</td><td></td></tr>

Modified: activemq/trunk/activemq-core/src/main/resources/activemq.xsd.wiki
URL: 
http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/resources/activemq.xsd.wiki?rev=657059&r1=657058&r2=657059&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/main/resources/activemq.xsd.wiki (original)
+++ activemq/trunk/activemq-core/src/main/resources/activemq.xsd.wiki Fri May 
16 06:38:29 2008
@@ -642,6 +642,8 @@
     | destinationPolicy | 
_[org.apache.activemq.broker.region.policy.PolicyMap|#org.apache.activemq.broker.region.policy.PolicyMap-types]_
 | {html}Sets the destination specific policies available either for exact
 destinations or for wildcard areas of destinations.{html} |
     | destinations | 
(_[org.apache.activemq.command.ActiveMQDestination|#org.apache.activemq.command.ActiveMQDestination-types]_)\*
 | {html}Sets the destinations which should be loaded/created on startup{html} |
+    | destroyApplicationContextOnShutdown | _boolean_ | {html}Sets whether the 
broker should shutdown the ApplicationContext when the broker is stopped.
+       The broker can be stopped because the underlying JDBC store is 
unavailable for example.{html} |
     | enableStatistics | _boolean_ | {html}Sets whether or not the Broker's 
services enable statistics or not.{html} |
     | jmsBridgeConnectors | 
(_[org.apache.activemq.network.jms.JmsConnector|#org.apache.activemq.network.jms.JmsConnector-types]_)\*
 | {html}{html} |
     | keepDurableSubsActive | _boolean_ | {html}{html} |


Reply via email to