I am trying to embed an ActiveMQ broker inside an application that is exposing services via JMS. The intent is to create a cluster of brokers so that: - each instance of the application has its own broker via VM transport; - each instance exposes a TCP transport to clients; - each instance is a node of a network of brokers, where each broker connects to the others using the TCP transport (statically configured).
So far I have been able to start one node, but when the second node starts as soon as it tries to get a connection it gets this mind boggling exception: javax.jms.JMSException: Could not create Transport. Reason: java.io.IOException: VMTransportServer already bound at: vm://null at org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:35) at org.apache.activemq.ActiveMQConnectionFactory.createTransport(ActiveMQConnectionFactory.java:239) at org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection(ActiveMQConnectionFactory.java:252) at org.apache.activemq.ActiveMQConnectionFactory.createActiveMQConnection(ActiveMQConnectionFactory.java:224) at org.apache.activemq.ActiveMQConnectionFactory.createConnection(ActiveMQConnectionFactory.java:172) ... Caused by: java.io.IOException: VMTransportServer already bound at: vm://null at org.apache.activemq.transport.vm.VMTransportFactory.bind(VMTransportFactory.java:201) at org.apache.activemq.transport.vm.VMTransportFactory.doCompositeConnect(VMTransportFactory.java:133) at org.apache.activemq.transport.vm.VMTransportFactory.doConnect(VMTransportFactory.java:53) at org.apache.activemq.transport.TransportFactory.doConnect(TransportFactory.java:51) at org.apache.activemq.transport.TransportFactory.connect(TransportFactory.java:80) at org.apache.activemq.ActiveMQConnectionFactory.createTransport(ActiveMQConnectionFactory.java:237) ... 6 more The code that starts the embedded broker is like this: ------------------------------- ActiveMQConnectionFactory conFactory= new ActiveMQConnectionFactory( "vm://" + nodeName + "?create=false&waitForStart=10000"); BrokerService activeMQ= new BrokerService(); activeMQ.setBrokerName(nodeName); if (otherNodes.length > 0) { String nodesConnectorString= "static:("; for (String node : otherNodes) nodesConnectorString += "tcp://" + node.trim() + ","; nodesConnectorString= nodesConnectorString.substring( 0, nodesConnectorString.length() -1) + ")"; URI nodesConnectorUri= new URI(nodesConnectorString); NetworkConnector nodeConnector= activeMQ.addNetworkConnector( nodesConnectorUri); nodeConnector.setDuplex(true); } URI localConnectorUri= new URI("tcp://localhost:" + externalPort); activeMQ.addConnector(localConnectorUri); activeMQ.start(); ActiveMQConnection connection= (ActiveMQConnection) conFactory.createConnection(); // EXCEPTION! connection.start(); ------------------------------- I don't understand to what that "vm://null" is referring, since I created the connection factory specifying a name for the broker (the "nodeName" is not null). And more, I don't understand how the exception can be raised about the VM transport, since the two nodes are on separate JVMs... Any help would be greatly appreciated. Thanks in advance. Gianluca -- View this message in context: http://www.nabble.com/VMTransportServer-already-bound-tp23296126p23296126.html Sent from the ActiveMQ - User mailing list archive at Nabble.com.