diff --git a/Plugins/CorvusEbMS/src/main/java/hk/hku/cecid/ebms/spa/client/jms/MessageListenerJMSClient.java b/Plugins/CorvusEbMS/src/main/java/hk/hku/cecid/ebms/spa/client/jms/MessageListenerJMSClient.java
index 688df86..d1eec12 100755
--- a/Plugins/CorvusEbMS/src/main/java/hk/hku/cecid/ebms/spa/client/jms/MessageListenerJMSClient.java
+++ b/Plugins/CorvusEbMS/src/main/java/hk/hku/cecid/ebms/spa/client/jms/MessageListenerJMSClient.java
@@ -25,7 +25,6 @@
import javax.xml.soap.SOAPException;
import javax.xml.soap.SOAPMessage;
-import org.apache.activemq.ActiveMQConnectionFactory;
public class MessageListenerJMSClient extends EbmsEventListener {
@@ -49,10 +48,7 @@ public class MessageListenerJMSClient extends EbmsEventListener {
@Override
public void init() {
- connectionFactory = new ActiveMQConnectionFactory(getConnectionUrl());
- ((ActiveMQConnectionFactory)connectionFactory).setUserName(getUsername());
- ((ActiveMQConnectionFactory)connectionFactory).setPassword(getPassword());
-
+ connectionFactory = buildConnectionFactory();
}
@Override
@@ -169,6 +165,26 @@ public String getQueueName() {
return getParameters().getProperty("queueName");
}
+ protected ConnectionFactory buildConnectionFactory() {
+ try {
+ String connectionFactoryUrl = getConnectionUrl();
+ Class connectionFactoryClass = getConnectionFactoryClass();
+ ConnectionFactory cf = (ConnectionFactory)connectionFactoryClass.getConstructor(String.class).newInstance(new Object[]{connectionFactoryUrl});
+ return cf;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return null;
+ }
+ }
+
+ protected Class getConnectionFactoryClass() throws ClassNotFoundException {
+ return Class.forName(getConnectionFactoryClassName());
+ }
+
+ protected String getConnectionFactoryClassName() {
+ return getParameters().getProperty("connectionFactory");
+ }
+
protected String getConnectionUrl() {
return getParameters().getProperty("connectionUrl");
}
diff --git a/Plugins/CorvusEbMS/src/test/java/hk/hku/cecid/ebms/spa/client/jms/MessageListenerJMSClientTest.java b/Plugins/CorvusEbMS/src/test/java/hk/hku/cecid/ebms/spa/client/jms/MessageListenerJMSClientTest.java
index e2c7587..7017012 100644
--- a/Plugins/CorvusEbMS/src/test/java/hk/hku/cecid/ebms/spa/client/jms/MessageListenerJMSClientTest.java
+++ b/Plugins/CorvusEbMS/src/test/java/hk/hku/cecid/ebms/spa/client/jms/MessageListenerJMSClientTest.java
@@ -59,8 +59,8 @@ public static void tearDownClass() throws Exception {
public void setUp() throws JMSException {
instance = spy(new MessageListenerJMSClient());
-
-
+
+ doReturn("org.apache.activemq.ActiveMQConnectionFactory").when(instance).getConnectionFactoryClassName();
doReturn("vm://mdh?broker.persistent=false").when(instance).getConnectionUrl();
doReturn("testQueue").when(instance).getQueueName();
doReturn(null).when(instance).getUsername();
diff --git a/Plugins/CorvusJMS/src/main/java/org/jentrata/spa/jms/module/JMSComponent.java b/Plugins/CorvusJMS/src/main/java/org/jentrata/spa/jms/module/JMSComponent.java
index e997953..613b3ef 100644
--- a/Plugins/CorvusJMS/src/main/java/org/jentrata/spa/jms/module/JMSComponent.java
+++ b/Plugins/CorvusJMS/src/main/java/org/jentrata/spa/jms/module/JMSComponent.java
@@ -11,7 +11,6 @@
import javax.jms.ConnectionFactory;
-import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.camel.CamelContext;
import org.apache.camel.ConsumerTemplate;
import org.apache.camel.Exchange;
@@ -59,17 +58,25 @@ public ConsumerTemplate getConsumer() {
}
protected ConnectionFactory buildConnectionFactory() {
- String connectionFactoryUrl = getConnectionFactoryUrl();
- ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory(connectionFactoryUrl);
- cf.setUserName(getUsername());
- cf.setPassword(getPassword());
- return cf;
+ try {
+ String connectionFactoryUrl = getConnectionFactoryUrl();
+ Class connectionFactoryClass = getConnectionFactoryClass();
+ ConnectionFactory cf = (ConnectionFactory)connectionFactoryClass.getConstructor(String.class).newInstance(new Object[]{connectionFactoryUrl});
+ return cf;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return null;
+ }
}
-
+
+ protected Class getConnectionFactoryClass() throws ClassNotFoundException {
+ return Class.forName(getParameters().getProperty("connectionFactory"));
+ }
+
protected String getConnectionFactoryUrl() {
return getParameters().getProperty("connectionFactoryUrl");
}
-
+
protected String getErrorUri() {
return getParameters().getProperty("errorUri",getId() + ":queue:DLQ");
}
diff --git a/Plugins/CorvusJMS/src/main/resources/org.jentrata.jms/conf/org/jentrata/spa/jms/conf/jms.module.internal.xml b/Plugins/CorvusJMS/src/main/resources/org.jentrata.jms/conf/org/jentrata/spa/jms/conf/jms.module.internal.xml
index 9aae07c..3f1565b 100755
--- a/Plugins/CorvusJMS/src/main/resources/org.jentrata.jms/conf/org/jentrata/spa/jms/conf/jms.module.internal.xml
+++ b/Plugins/CorvusJMS/src/main/resources/org.jentrata.jms/conf/org/jentrata/spa/jms/conf/jms.module.internal.xml
@@ -23,6 +23,7 @@
+
diff --git a/Plugins/CorvusJMS/src/test/resources/modules/jms-test-module.xml b/Plugins/CorvusJMS/src/test/resources/modules/jms-test-module.xml
index 4a50ec9..1102176 100644
--- a/Plugins/CorvusJMS/src/test/resources/modules/jms-test-module.xml
+++ b/Plugins/CorvusJMS/src/test/resources/modules/jms-test-module.xml
@@ -2,7 +2,8 @@
org.jentrata.spa.jms.module.JMSComponent
-
+
+
\ No newline at end of file