You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ra...@apache.org on 2006/12/28 21:29:35 UTC

svn commit: r490786 - /incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/BrokerService.java

Author: rajdavies
Date: Thu Dec 28 12:29:34 2006
New Revision: 490786

URL: http://svn.apache.org/viewvc?view=rev&rev=490786
Log:
Fix for http://issues.apache.org/activemq/browse/AMQ-841

Modified:
    incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/BrokerService.java

Modified: incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/BrokerService.java
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/BrokerService.java?view=diff&rev=490786&r1=490785&r2=490786
==============================================================================
--- incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/BrokerService.java (original)
+++ incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/BrokerService.java Thu Dec 28 12:29:34 2006
@@ -22,7 +22,15 @@
 import java.io.Serializable;
 import java.net.URI;
 import java.net.URISyntaxException;
-import java.util.*;
+import java.net.UnknownHostException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.concurrent.atomic.AtomicBoolean;
 import javax.management.MBeanServer;
 import javax.management.MalformedObjectNameException;
 import javax.management.ObjectName;
@@ -48,11 +56,9 @@
 import org.apache.activemq.broker.region.policy.PendingDurableSubscriberMessageStoragePolicy;
 import org.apache.activemq.broker.region.policy.PolicyMap;
 import org.apache.activemq.broker.region.policy.StorePendingDurableSubscriberMessageStoragePolicy;
-import org.apache.activemq.broker.region.policy.VMPendingDurableSubscriberMessageStoragePolicy;
 import org.apache.activemq.broker.region.virtual.VirtualDestination;
 import org.apache.activemq.broker.region.virtual.VirtualDestinationInterceptor;
 import org.apache.activemq.broker.region.virtual.VirtualTopic;
-import org.apache.activemq.broker.util.CommandAgent;
 import org.apache.activemq.command.ActiveMQDestination;
 import org.apache.activemq.command.BrokerId;
 import org.apache.activemq.kaha.Store;
@@ -78,8 +84,6 @@
 import org.apache.activemq.util.URISupport;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import java.util.concurrent.CopyOnWriteArrayList;
-import java.util.concurrent.atomic.AtomicBoolean;
 
 /**
  * Manages the lifecycle of an ActiveMQ Broker. A BrokerService consists of a number of transport
@@ -90,10 +94,13 @@
  */
 public class BrokerService implements Service, Serializable {
 
-    public static final String DEFAULT_PORT = "61616";
+   
 
     private static final Log log = LogFactory.getLog(BrokerService.class);
     private static final long serialVersionUID = 7353129142305630237L;
+    public static final String DEFAULT_PORT = "61616";
+    public static final String DEFAULT_BROKER_NAME = "localhost";
+    public static final String LOCAL_HOST_NAME;
 
     private boolean useJmx = true;
     private boolean persistent = true;
@@ -101,7 +108,7 @@
     private boolean useShutdownHook = true;
     private boolean useLoggingForShutdownErrors = false;
     private boolean shutdownOnMasterFailure = false;
-    private String brokerName = "localhost";
+    private String brokerName = DEFAULT_BROKER_NAME;
     private File dataDirectory;
     private File tmpDataDirectory;
     private Broker broker;
@@ -141,10 +148,12 @@
     private ActiveMQDestination[] destinations;
     private Store tempDataStore;
     private int persistenceThreadPriority = Thread.MAX_PRIORITY;
+    private boolean useLocalHostBrokerName = false;
     //private PendingDurableSubscriberMessageStoragePolicy pendingDurableSubscriberPolicy = new VMPendingDurableSubscriberMessageStoragePolicy();
     private PendingDurableSubscriberMessageStoragePolicy pendingDurableSubscriberPolicy = new StorePendingDurableSubscriberMessageStoragePolicy();
-   
+    
 
+   
     /**
      * Adds a new transport connector for the given bind address
      *
@@ -397,7 +406,7 @@
             getBroker().start();
             /*
             if(isUseJmx()){
-                // yes - this is orer dependent!
+                // yes - this is order dependent!
                 // register all destination in persistence store including inactive destinations as mbeans
                 this.startDestinationsInPersistenceStore(broker);
             }
@@ -539,6 +548,10 @@
      * Sets the name of this broker; which must be unique in the network
      */
     public void setBrokerName(String brokerName) {
+        if (brokerName == null) {
+            throw new NullPointerException("The broker name cannot be null");
+        }
+        brokerName = brokerName.trim();
         this.brokerName = brokerName;
     }
 
@@ -906,9 +919,10 @@
     public URI getVmConnectorURI() {
         if (vmConnectorURI == null) {
             try {
-                vmConnectorURI = new URI("vm://" + getBrokerName());
+                vmConnectorURI = new URI("vm://" + getBrokerName().replaceAll("[^a-zA-Z0-9\\.\\_\\-]", "_"));
             }
             catch (URISyntaxException e) {
+                log.error("Badly formed URI from " + getBrokerName(),e);
             }
         }
         return vmConnectorURI;
@@ -1022,6 +1036,23 @@
             broker.setPendingDurableSubscriberPolicy(pendingDurableSubscriberPolicy);
         }
     }
+    
+    /**
+     * @return the useLocalHostBrokerName
+     */
+    public boolean isUseLocalHostBrokerName(){
+        return this.useLocalHostBrokerName;
+    }
+
+    /**
+     * @param useLocalHostBrokerName the useLocalHostBrokerName to set
+     */
+    public void setUseLocalHostBrokerName(boolean useLocalHostBrokerName){
+        this.useLocalHostBrokerName=useLocalHostBrokerName;
+        if(useLocalHostBrokerName&&!started.get()&&brokerName==null||brokerName==DEFAULT_BROKER_NAME){
+            brokerName=LOCAL_HOST_NAME;
+        }
+    }
 
     // Implementation methods
     // -------------------------------------------------------------------------
@@ -1561,4 +1592,14 @@
             }
         }
     }    
+    
+    static{
+        String localHostName = "localhost";
+        try{
+            localHostName=java.net.InetAddress.getLocalHost().getHostName();
+        }catch(UnknownHostException e){
+            log.error("Failed to resolve localhost");
+        }
+        LOCAL_HOST_NAME = localHostName;
+    }
 }