If localhost broker not started and other named broker exists - use that from vm:// transport instead of creating a new broker

git-svn-id: https://svn.apache.org/repos/asf/activemq/trunk@520870 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Robert Davies 2007-03-21 12:54:10 +00:00
parent c328c72472
commit a2aed3d732
2 changed files with 59 additions and 38 deletions

View File

@ -1,73 +1,94 @@
/**
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
*
* Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE
* file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file
* to You under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the
* License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*/
package org.apache.activemq.broker;
import java.util.HashMap;
import java.util.Iterator;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
*
* @version $Revision: 1.3 $
*/
public class BrokerRegistry {
public class BrokerRegistry{
static final private BrokerRegistry instance = new BrokerRegistry();
public static BrokerRegistry getInstance() {
private static final Log log=LogFactory.getLog(BrokerRegistry.class);
static final private BrokerRegistry instance=new BrokerRegistry();
public static BrokerRegistry getInstance(){
return instance;
}
private final Object mutex=new Object();
private final HashMap<String,BrokerService> brokers=new HashMap<String,BrokerService>();
private final Object mutex = new Object();
private final HashMap brokers = new HashMap();
public BrokerService lookup(String brokerName) {
synchronized(mutex) {
return (BrokerService)brokers.get(brokerName);
/**
* @param brokerName
* @return the BrokerService
*/
public BrokerService lookup(String brokerName){
BrokerService result=null;
synchronized(mutex){
result=brokers.get(brokerName);
if(result==null&&brokerName!=null&&brokerName.equals(BrokerService.DEFAULT_BROKER_NAME)){
result=findFirst();
if(result!=null){
log.warn("Broker localhost not started so using "+result.getBrokerName()+" instead");
}
}
}
return result;
}
/**
* Returns the first registered broker found
* @return the first BrokerService
*/
public BrokerService findFirst() {
synchronized(mutex) {
Iterator iter = brokers.values().iterator();
while (iter.hasNext()) {
return (BrokerService) iter.next();
public BrokerService findFirst(){
synchronized(mutex){
Iterator<BrokerService> iter=brokers.values().iterator();
while(iter.hasNext()){
return iter.next();
}
return null;
}
}
public void bind(String brokerName, BrokerService broker) {
synchronized(mutex) {
brokers.put(brokerName, broker);
/**
* @param brokerName
* @param broker
*/
public void bind(String brokerName,BrokerService broker){
synchronized(mutex){
brokers.put(brokerName,broker);
}
}
public void unbind(String brokerName) {
synchronized(mutex) {
/**
* @param brokerName
*/
public void unbind(String brokerName){
synchronized(mutex){
brokers.remove(brokerName);
}
}
public Object getRegistryMutext() {
/**
* @return the mutex used
*/
public Object getRegistryMutext(){
return mutex;
}
}

View File

@ -100,7 +100,7 @@ public class BrokerService implements Service, Serializable {
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";
static final String DEFAULT_BROKER_NAME = "localhost";
public static final String LOCAL_HOST_NAME;
private boolean useJmx = true;