Author: cwiklik Date: Thu Feb 24 22:25:36 2011 New Revision: 1074321 URL: http://svn.apache.org/viewvc?rev=1074321&view=rev Log: UIMA-2069 Modified detection of an open port for broker URL
Modified: uima/uima-as/trunk/uimaj-as-activemq/src/test/java/org/apache/uima/ee/test/utils/ActiveMQSupport.java Modified: uima/uima-as/trunk/uimaj-as-activemq/src/test/java/org/apache/uima/ee/test/utils/ActiveMQSupport.java URL: http://svn.apache.org/viewvc/uima/uima-as/trunk/uimaj-as-activemq/src/test/java/org/apache/uima/ee/test/utils/ActiveMQSupport.java?rev=1074321&r1=1074320&r2=1074321&view=diff ============================================================================== --- uima/uima-as/trunk/uimaj-as-activemq/src/test/java/org/apache/uima/ee/test/utils/ActiveMQSupport.java (original) +++ uima/uima-as/trunk/uimaj-as-activemq/src/test/java/org/apache/uima/ee/test/utils/ActiveMQSupport.java Thu Feb 24 22:25:36 2011 @@ -19,16 +19,13 @@ package org.apache.uima.ee.test.utils; -import java.io.IOException; import java.lang.reflect.Method; -import java.net.ServerSocket; +import java.net.BindException; import java.net.URI; -import java.util.Set; import java.util.concurrent.Semaphore; import javax.jms.Connection; import javax.jms.ConnectionFactory; -import javax.management.ObjectName; import junit.framework.TestCase; @@ -73,8 +70,6 @@ public class ActiveMQSupport extends Tes + "test" + System.getProperty("file.separator") + "resources" + System.getProperty("file.separator") + "data"; - private static Thread brokerThread = null; - protected static TransportConnector httpConnector = null; public static Semaphore brokerSemaphore = new Semaphore(1); @@ -122,9 +117,7 @@ public class ActiveMQSupport extends Tes } protected String addHttpConnector(BrokerService aBroker, int aDefaultPort) throws Exception { try { - String httpURI = generateInternalURI("http", aDefaultPort); - httpConnector = aBroker.addConnector(httpURI); - + httpConnector = addConnector(aBroker, "http",aDefaultPort); // Use reflection to determine if the AMQ version is at least 5.2. If it is, we must // plug in a broker to the httpConnector otherwise we get NPE when starting the connector. // AMQ version 4.1.1 doesn't exhibit this problem. @@ -136,7 +129,7 @@ public class ActiveMQSupport extends Tes } System.out.println("Adding HTTP Connector:" + httpConnector.getConnectUri()); httpConnector.start(); - return httpURI; + return httpConnector.getUri().toString(); } catch (Exception e) { if (UIMAFramework.getLogger(CLASS_NAME).isLoggable(Level.WARNING)) { UIMAFramework.getLogger(CLASS_NAME).logrb(Level.WARNING, CLASS_NAME.getName(), @@ -162,51 +155,22 @@ public class ActiveMQSupport extends Tes httpConnector.stop(); broker.removeConnector(httpConnector); } - protected int findOpenPort(int startWithPort) { - boolean success = false; - ServerSocket ssocket = null; - - while (!success) { - try { - ssocket = new ServerSocket(startWithPort); - success = true; - } catch (Exception e) { - startWithPort++; - } finally { - try { - if (ssocket != null) { - ssocket.close(); - } - } catch (IOException ioe) { - } - } - } - return startWithPort; - } - private String generateInternalURI(String aProtocol, int aDefaultPort) throws Exception { - boolean success = false; - int openPort = aDefaultPort; - ServerSocket ssocket = null; - - while (!success) { + + protected TransportConnector addConnector(BrokerService aBroker, String type, int basePort) throws Exception { + boolean found = false; + TransportConnector transportConnector = null; + while( !found ) { try { - ssocket = new ServerSocket(openPort); - String uri = aProtocol + "://localhost:" + openPort; - success = true; - return uri; - } catch (Exception e) { - openPort++; - } finally { - try { - if (ssocket != null) { - ssocket.close(); - } - } catch (IOException ioe) { - } + String uri = "tcp://localhost:" + basePort; + transportConnector = aBroker.addConnector(uri); + found = true; + } catch ( BindException e) { + basePort++; + } catch( Exception e) { + throw e; } } - return null; - + return transportConnector; } protected String getBrokerUri() { @@ -222,16 +186,17 @@ public class ActiveMQSupport extends Tes } public BrokerService createBroker() throws Exception { - return createBroker(findOpenPort(DEFAULT_BROKER_PORT), true, false); + return createBroker(DEFAULT_BROKER_PORT, true, false); } protected BrokerService createBroker(int port, boolean useJmx, boolean secondaryBroker) throws Exception { - System.out.println(">>>> Starting Broker On Port:" + port); String hostName = "localhost"; - uri = "tcp://" + hostName + ":" + port; - BrokerService broker = BrokerFactory.createBroker(new URI("broker:()/" + hostName - + "?persistent=false")); - tcpConnector = broker.addConnector(uri); + BrokerService broker = + BrokerFactory.createBroker(new URI("broker:()/" + hostName + "?persistent=false")); + tcpConnector = addConnector(broker, "tcp",port); + uri = tcpConnector.getUri().toString(); + System.out.println(">>>> Starting Broker With URL:" + uri); + if ( secondaryBroker ) { broker.getManagementContext().setJmxDomainName(broker.getManagementContext().getJmxDomainName()+".test"); tcpConnector.setName(DEFAULT_BROKER_URL_KEY_2); @@ -261,7 +226,7 @@ public class ActiveMQSupport extends Tes } protected BrokerService setupSecondaryBroker(boolean addProperty) throws Exception { System.setProperty("activemq.broker.jmx.domain","org.apache.activemq.test"); - BrokerService broker2 = createBroker(findOpenPort(DEFAULT_BROKER_PORT_2), true, true); + BrokerService broker2 = createBroker(DEFAULT_BROKER_PORT_2, true, true); broker2.start(); if ( addProperty ) { System.setProperty("BrokerURL", broker2.getConnectorByName(DEFAULT_BROKER_URL_KEY_2).getUri().toString());