You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by rf...@apache.org on 2008/02/14 02:32:09 UTC
svn commit: r627631 - in /incubator/tuscany/java/sca: itest/jms/
itest/jms/src/test/java/org/apache/tuscany/sca/binding/jms/
modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/
modules/binding-jms/src/test/java/org/apache/tus...
Author: rfeng
Date: Wed Feb 13 17:32:08 2008
New Revision: 627631
URL: http://svn.apache.org/viewvc?rev=627631&view=rev
Log:
Add the on-demand ActiveMQ broker start/stop with detection/sharing of running brokers (toward the geronimo deployment)
Modified:
incubator/tuscany/java/sca/itest/jms/pom.xml
incubator/tuscany/java/sca/itest/jms/src/test/java/org/apache/tuscany/sca/binding/jms/ExternalBrokerTestCase.java
incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingServiceBindingProvider.java
incubator/tuscany/java/sca/modules/binding-jms/src/test/java/org/apache/tuscany/sca/binding/jms/mock/MockJMSResourceFactoryQueueExist.java
incubator/tuscany/java/sca/modules/binding-jms/src/test/java/org/apache/tuscany/sca/binding/jms/mock/MockJMSResourceFactoryQueueNotExist.java
incubator/tuscany/java/sca/modules/host-jms-activemq/src/main/java/org/apache/tuscany/sca/host/jms/activemq/ActiveMQBroker.java
incubator/tuscany/java/sca/modules/host-jms-activemq/src/main/java/org/apache/tuscany/sca/host/jms/activemq/ActiveMQModuleActivator.java
incubator/tuscany/java/sca/modules/host-jms-activemq/src/main/java/org/apache/tuscany/sca/host/jms/activemq/JMSResourceFactoryImpl.java
incubator/tuscany/java/sca/modules/host-jms/src/main/java/org/apache/tuscany/sca/host/jms/JMSResourceFactory.java
incubator/tuscany/java/sca/samples/helloworld-reference-jms/src/test/java/helloworld/HelloWorldJmsClientTestCase.java
incubator/tuscany/java/sca/samples/helloworld-service-jms/src/main/java/helloworld/HelloWorldServer.java
incubator/tuscany/java/sca/samples/helloworld-service-jms/src/test/java/helloworld/HelloWorldJmsServerTestCaseOff.java
Modified: incubator/tuscany/java/sca/itest/jms/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/jms/pom.xml?rev=627631&r1=627630&r2=627631&view=diff
==============================================================================
--- incubator/tuscany/java/sca/itest/jms/pom.xml (original)
+++ incubator/tuscany/java/sca/itest/jms/pom.xml Wed Feb 13 17:32:08 2008
@@ -47,7 +47,7 @@
<groupId>org.apache.tuscany.sca</groupId>
<artifactId>tuscany-host-embedded</artifactId>
<version>1.2-incubating-SNAPSHOT</version>
- <scope>test</scope>
+ <scope>runtime</scope>
</dependency>
<dependency>
Modified: incubator/tuscany/java/sca/itest/jms/src/test/java/org/apache/tuscany/sca/binding/jms/ExternalBrokerTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/jms/src/test/java/org/apache/tuscany/sca/binding/jms/ExternalBrokerTestCase.java?rev=627631&r1=627630&r2=627631&view=diff
==============================================================================
--- incubator/tuscany/java/sca/itest/jms/src/test/java/org/apache/tuscany/sca/binding/jms/ExternalBrokerTestCase.java (original)
+++ incubator/tuscany/java/sca/itest/jms/src/test/java/org/apache/tuscany/sca/binding/jms/ExternalBrokerTestCase.java Wed Feb 13 17:32:08 2008
@@ -36,7 +36,7 @@
@Before
public void init() throws Exception {
- startBroker();
+ // startBroker();
scaDomain = SCADomain.newInstance("http://localhost", "/", "external/client.composite", "external/service.composite");
}
Modified: incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingServiceBindingProvider.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingServiceBindingProvider.java?rev=627631&r1=627630&r2=627631&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingServiceBindingProvider.java (original)
+++ incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingServiceBindingProvider.java Wed Feb 13 17:32:08 2008
@@ -46,6 +46,7 @@
private RuntimeComponentService service;
private JMSBinding jmsBinding;
private JMSResourceFactory jmsResourceFactory;
+ private Object broker;
private MessageConsumer consumer;
public JMSBindingServiceBindingProvider(RuntimeComponent component,
@@ -55,7 +56,6 @@
this.jmsBinding = binding;
jmsResourceFactory = jmsHost.createJMSResourceFactory(binding.getConnectionFactoryName(), binding.getInitialContextFactoryName(), binding.getJndiURL());
- jmsResourceFactory.startBroker();
// if the default destination queue names is set
// set the destinate queue name to the reference name
@@ -96,6 +96,7 @@
}
public void start() {
+ this.broker = jmsResourceFactory.startBroker();
try {
registerListerner();
@@ -108,6 +109,9 @@
try {
consumer.close();
jmsResourceFactory.closeConnection();
+ if(this.broker!=null) {
+ jmsResourceFactory.stopBroker(this.broker);
+ }
} catch (Exception e) {
throw new JMSBindingException("Error stopping JMSServiceBinding", e);
}
Modified: incubator/tuscany/java/sca/modules/binding-jms/src/test/java/org/apache/tuscany/sca/binding/jms/mock/MockJMSResourceFactoryQueueExist.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-jms/src/test/java/org/apache/tuscany/sca/binding/jms/mock/MockJMSResourceFactoryQueueExist.java?rev=627631&r1=627630&r2=627631&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-jms/src/test/java/org/apache/tuscany/sca/binding/jms/mock/MockJMSResourceFactoryQueueExist.java (original)
+++ incubator/tuscany/java/sca/modules/binding-jms/src/test/java/org/apache/tuscany/sca/binding/jms/mock/MockJMSResourceFactoryQueueExist.java Wed Feb 13 17:32:08 2008
@@ -45,6 +45,10 @@
return d;
}
- public void startBroker() {
+ public Object startBroker() {
+ return null;
+ }
+
+ public void stopBroker(Object broker) {
}
}
Modified: incubator/tuscany/java/sca/modules/binding-jms/src/test/java/org/apache/tuscany/sca/binding/jms/mock/MockJMSResourceFactoryQueueNotExist.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-jms/src/test/java/org/apache/tuscany/sca/binding/jms/mock/MockJMSResourceFactoryQueueNotExist.java?rev=627631&r1=627630&r2=627631&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-jms/src/test/java/org/apache/tuscany/sca/binding/jms/mock/MockJMSResourceFactoryQueueNotExist.java (original)
+++ incubator/tuscany/java/sca/modules/binding-jms/src/test/java/org/apache/tuscany/sca/binding/jms/mock/MockJMSResourceFactoryQueueNotExist.java Wed Feb 13 17:32:08 2008
@@ -42,6 +42,10 @@
return null;
}
- public void startBroker() {
+ public Object startBroker() {
+ return null;
+ }
+
+ public void stopBroker(Object broker) {
}
}
Modified: incubator/tuscany/java/sca/modules/host-jms-activemq/src/main/java/org/apache/tuscany/sca/host/jms/activemq/ActiveMQBroker.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-jms-activemq/src/main/java/org/apache/tuscany/sca/host/jms/activemq/ActiveMQBroker.java?rev=627631&r1=627630&r2=627631&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/host-jms-activemq/src/main/java/org/apache/tuscany/sca/host/jms/activemq/ActiveMQBroker.java (original)
+++ incubator/tuscany/java/sca/modules/host-jms-activemq/src/main/java/org/apache/tuscany/sca/host/jms/activemq/ActiveMQBroker.java Wed Feb 13 17:32:08 2008
@@ -18,6 +18,9 @@
*/
package org.apache.tuscany.sca.host.jms.activemq;
+import java.io.File;
+import java.util.UUID;
+
import org.apache.activemq.broker.BrokerService;
/**
@@ -25,22 +28,33 @@
public class ActiveMQBroker {
public static final String CONNECTOR_URL = "tcp://localhost:61619";
+ public static final String BROKER_NAME = "ActiveMQ";
+
private BrokerService broker;
+ private String url = CONNECTOR_URL;
public ActiveMQBroker() {
}
+ public ActiveMQBroker(String url) {
+ this.url = url;
+ }
+
public void start() {
broker = new BrokerService();
+ String uuid = UUID.randomUUID().toString();
+ broker.setBrokerName(BROKER_NAME + "-" + uuid);
+ broker.setDataDirectory(new File("target/activemq-data/" + uuid));
try {
- broker.addConnector(CONNECTOR_URL);
+ broker.addConnector(url);
+ broker.setUseJmx(false);
broker.start();
- } catch ( Exception e) {
+ } catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
-
+
public void stop() {
if (broker != null) {
try {
@@ -49,9 +63,12 @@
e.printStackTrace();
throw new RuntimeException(e);
}
- broker = null;
+ broker = null;
}
}
-
+ public boolean isStarted() {
+ return broker != null && broker.isStarted();
+ }
+
}
Modified: incubator/tuscany/java/sca/modules/host-jms-activemq/src/main/java/org/apache/tuscany/sca/host/jms/activemq/ActiveMQModuleActivator.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-jms-activemq/src/main/java/org/apache/tuscany/sca/host/jms/activemq/ActiveMQModuleActivator.java?rev=627631&r1=627630&r2=627631&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/host-jms-activemq/src/main/java/org/apache/tuscany/sca/host/jms/activemq/ActiveMQModuleActivator.java (original)
+++ incubator/tuscany/java/sca/modules/host-jms-activemq/src/main/java/org/apache/tuscany/sca/host/jms/activemq/ActiveMQModuleActivator.java Wed Feb 13 17:32:08 2008
@@ -19,27 +19,39 @@
package org.apache.tuscany.sca.host.jms.activemq;
+import java.util.ArrayList;
+import java.util.List;
+
import org.apache.tuscany.sca.core.ExtensionPointRegistry;
import org.apache.tuscany.sca.core.ModuleActivator;
public class ActiveMQModuleActivator implements ModuleActivator {
- private static ActiveMQBroker activeMQHost;
+ private static List<ActiveMQBroker> brokers = new ArrayList<ActiveMQBroker>();
public void start(ExtensionPointRegistry registry) {
}
public void stop(ExtensionPointRegistry registry) {
- if (activeMQHost != null) {
- activeMQHost.stop();
- activeMQHost = null;
+ for (ActiveMQBroker b : brokers) {
+ if (b.isStarted()) {
+ b.stop();
+ }
}
+ brokers.clear();
}
- public static void startBroker() {
- if (activeMQHost == null) {
- activeMQHost = new ActiveMQBroker();
- activeMQHost.start();
- }
+ public synchronized static ActiveMQBroker startBroker(String url) {
+ ActiveMQBroker broker = new ActiveMQBroker(url);
+ broker.start();
+ brokers.add(broker);
+ return broker;
+ }
+
+ public synchronized static ActiveMQBroker startBroker() {
+ ActiveMQBroker broker = new ActiveMQBroker();
+ broker.start();
+ brokers.add(broker);
+ return broker;
}
}
Modified: incubator/tuscany/java/sca/modules/host-jms-activemq/src/main/java/org/apache/tuscany/sca/host/jms/activemq/JMSResourceFactoryImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-jms-activemq/src/main/java/org/apache/tuscany/sca/host/jms/activemq/JMSResourceFactoryImpl.java?rev=627631&r1=627630&r2=627631&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/host-jms-activemq/src/main/java/org/apache/tuscany/sca/host/jms/activemq/JMSResourceFactoryImpl.java (original)
+++ incubator/tuscany/java/sca/modules/host-jms-activemq/src/main/java/org/apache/tuscany/sca/host/jms/activemq/JMSResourceFactoryImpl.java Wed Feb 13 17:32:08 2008
@@ -40,7 +40,7 @@
private String initialContextFactoryName = DEFAULT_ICFN;
private String connectionFactoryName = "ConnectionFactory";
private String jndiURL = ActiveMQBroker.CONNECTOR_URL;
-
+
private Connection connection;
private Context context;
private boolean isConnectionStarted;
@@ -103,10 +103,17 @@
}
}
- public void startBroker() {
+ public Object startBroker() {
if (isEmbedded()) {
// ensure the broker has been started
- ActiveMQModuleActivator.startBroker();
+ return ActiveMQModuleActivator.startBroker(jndiURL);
+ }
+ return null;
+ }
+
+ public void stopBroker(Object broker) {
+ if(broker instanceof ActiveMQBroker) {
+ ((ActiveMQBroker) broker).stop();
}
}
@@ -115,34 +122,36 @@
* for now it always starts it if the activemq icf is being used with our default jndiurl
*/
protected boolean isEmbedded() {
- return DEFAULT_ICFN.equals(initialContextFactoryName) && ActiveMQBroker.CONNECTOR_URL.equals(jndiURL);
+ try {
+ getConnection();
+ return false;
+ } catch (Exception e) {
+ return true;
+ }
+ // return DEFAULT_ICFN.equals(initialContextFactoryName) && ActiveMQBroker.CONNECTOR_URL.equals(jndiURL);
}
private void createConnection() throws NamingException, JMSException {
- if (context == null) {
- createInitialContext();
- }
- ConnectionFactory connectionFactory = (ConnectionFactory)context.lookup(connectionFactoryName);
+ ConnectionFactory connectionFactory = (ConnectionFactory)getInitialContext().lookup(connectionFactoryName);
connection = connectionFactory.createConnection();
}
- private void createInitialContext() throws NamingException {
- Properties props = new Properties();
- props.setProperty(Context.INITIAL_CONTEXT_FACTORY, initialContextFactoryName);
- props.setProperty(Context.PROVIDER_URL, jndiURL);
+ private synchronized Context getInitialContext() throws NamingException {
+ if (context == null) {
+ Properties props = new Properties();
+ props.setProperty(Context.INITIAL_CONTEXT_FACTORY, initialContextFactoryName);
+ props.setProperty(Context.PROVIDER_URL, jndiURL);
- context = new InitialContext(props);
+ context = new InitialContext(props);
+ }
+ return context;
}
public Destination lookupDestination(String jndiName) throws NamingException {
- if (context == null) {
- createInitialContext();
- }
-
Destination dest = null;
try {
- dest = (Destination)context.lookup(jndiName);
+ dest = (Destination)getInitialContext().lookup(jndiName);
} catch (NamingException ex) {
}
Modified: incubator/tuscany/java/sca/modules/host-jms/src/main/java/org/apache/tuscany/sca/host/jms/JMSResourceFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-jms/src/main/java/org/apache/tuscany/sca/host/jms/JMSResourceFactory.java?rev=627631&r1=627630&r2=627631&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/host-jms/src/main/java/org/apache/tuscany/sca/host/jms/JMSResourceFactory.java (original)
+++ incubator/tuscany/java/sca/modules/host-jms/src/main/java/org/apache/tuscany/sca/host/jms/JMSResourceFactory.java Wed Feb 13 17:32:08 2008
@@ -42,5 +42,15 @@
Destination createDestination(String jndiName) throws NamingException;
- void startBroker();
+ /**
+ * Start a new message broker
+ * @return The newly created message broker, null if no broker is created
+ */
+ Object startBroker();
+
+ /**
+ * Stop the message broker
+ * @param broker
+ */
+ void stopBroker(Object broker);
}
Modified: incubator/tuscany/java/sca/samples/helloworld-reference-jms/src/test/java/helloworld/HelloWorldJmsClientTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/helloworld-reference-jms/src/test/java/helloworld/HelloWorldJmsClientTestCase.java?rev=627631&r1=627630&r2=627631&view=diff
==============================================================================
--- incubator/tuscany/java/sca/samples/helloworld-reference-jms/src/test/java/helloworld/HelloWorldJmsClientTestCase.java (original)
+++ incubator/tuscany/java/sca/samples/helloworld-reference-jms/src/test/java/helloworld/HelloWorldJmsClientTestCase.java Wed Feb 13 17:32:08 2008
@@ -22,8 +22,6 @@
import junit.framework.Assert;
import org.apache.tuscany.sca.host.embedded.SCADomain;
-import org.apache.tuscany.sca.host.embedded.SCATestCaseRunner;
-import org.apache.tuscany.sca.host.jms.activemq.ActiveMQModuleActivator;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -43,7 +41,7 @@
@Before
public void startClient() throws Exception {
try {
- ActiveMQModuleActivator.startBroker();
+ // ActiveMQModuleActivator.startBroker();
scaServiceDomain = SCADomain.newInstance("helloworldjmsservice.composite");
scaClientDomain = SCADomain.newInstance("helloworldjmsreference.composite");
helloWorldService = scaClientDomain.getService(HelloWorldService.class, "HelloWorldServiceComponent");
Modified: incubator/tuscany/java/sca/samples/helloworld-service-jms/src/main/java/helloworld/HelloWorldServer.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/helloworld-service-jms/src/main/java/helloworld/HelloWorldServer.java?rev=627631&r1=627630&r2=627631&view=diff
==============================================================================
--- incubator/tuscany/java/sca/samples/helloworld-service-jms/src/main/java/helloworld/HelloWorldServer.java (original)
+++ incubator/tuscany/java/sca/samples/helloworld-service-jms/src/main/java/helloworld/HelloWorldServer.java Wed Feb 13 17:32:08 2008
@@ -21,7 +21,6 @@
import java.io.IOException;
import org.apache.tuscany.sca.host.embedded.SCADomain;
-import org.apache.tuscany.sca.host.jms.activemq.ActiveMQModuleActivator;
/**
* This server program shows how to create an SCA runtime, and start it which
@@ -31,7 +30,7 @@
public static void main(String[] args) {
- ActiveMQModuleActivator.startBroker();
+ // ActiveMQModuleActivator.startBroker();
SCADomain scaDomain = SCADomain.newInstance("helloworldjmsservice.composite");
try {
Modified: incubator/tuscany/java/sca/samples/helloworld-service-jms/src/test/java/helloworld/HelloWorldJmsServerTestCaseOff.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/helloworld-service-jms/src/test/java/helloworld/HelloWorldJmsServerTestCaseOff.java?rev=627631&r1=627630&r2=627631&view=diff
==============================================================================
--- incubator/tuscany/java/sca/samples/helloworld-service-jms/src/test/java/helloworld/HelloWorldJmsServerTestCaseOff.java (original)
+++ incubator/tuscany/java/sca/samples/helloworld-service-jms/src/test/java/helloworld/HelloWorldJmsServerTestCaseOff.java Wed Feb 13 17:32:08 2008
@@ -24,7 +24,6 @@
import java.io.IOException;
import org.apache.tuscany.sca.host.embedded.SCADomain;
-import org.apache.tuscany.sca.host.jms.activemq.ActiveMQModuleActivator;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -32,21 +31,22 @@
/**
* Tests that the helloworld server is available
*/
-public class HelloWorldJmsServerTestCaseOff{
+public class HelloWorldJmsServerTestCaseOff {
private SCADomain scaDomain;
@Before
public void startServer() throws Exception {
- ActiveMQModuleActivator.startBroker();
- scaDomain = SCADomain.newInstance("helloworldjmsservice.composite");
+ // ActiveMQModuleActivator.startBroker();
+ scaDomain = SCADomain.newInstance("helloworldjmsservice.composite");
}
@Test
public void testServiceCall() throws IOException {
- HelloWorldService helloWorldService = scaDomain.getService(HelloWorldService.class, "HelloWorldServiceComponent/HelloWorldService");
+ HelloWorldService helloWorldService =
+ scaDomain.getService(HelloWorldService.class, "HelloWorldServiceComponent/HelloWorldService");
assertNotNull(helloWorldService);
-
+
assertEquals("Hello Smith", helloWorldService.getGreetings("Smith"));
}
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org