summaryrefslogtreecommitdiffstats
path: root/sandbox/rajith/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSService.java
diff options
context:
space:
mode:
Diffstat (limited to 'sandbox/rajith/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSService.java')
-rw-r--r--sandbox/rajith/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSService.java82
1 files changed, 82 insertions, 0 deletions
diff --git a/sandbox/rajith/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSService.java b/sandbox/rajith/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSService.java
new file mode 100644
index 0000000000..d92303145e
--- /dev/null
+++ b/sandbox/rajith/binding.jms/src/main/java/org/apache/tuscany/binding/jms/JMSService.java
@@ -0,0 +1,82 @@
+package org.apache.tuscany.binding.jms;
+
+
+import javax.jms.Destination;
+import javax.jms.JMSException;
+import javax.jms.MessageConsumer;
+import javax.jms.Session;
+import javax.naming.NamingException;
+import javax.xml.namespace.QName;
+
+import org.apache.tuscany.spi.component.CompositeComponent;
+import org.apache.tuscany.spi.extension.ServiceExtension;
+import org.apache.tuscany.spi.wire.WireService;
+
+import commonj.sdo.helper.TypeHelper;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class JMSService extends ServiceExtension {
+
+ private JMSBinding jmsBinding;
+ private TypeHelper typeHelper;
+ private JMSResourceFactory jmsResourceFactory;
+ private MessageConsumer consumer;
+ private OperationSelector operationSelector;
+
+ public JMSService(String name,
+ CompositeComponent parent,
+ WireService wireService,
+ JMSBinding jmsBinding,
+ JMSResourceFactory jmsResourceFactory,
+ OperationSelector operationSelector,
+ Class<?> service,
+ TypeHelper typeHelper) {
+ super(name, service, parent, wireService);
+
+ this.jmsBinding = jmsBinding;
+ this.typeHelper = typeHelper;
+ this.jmsResourceFactory = jmsResourceFactory;
+ this.operationSelector = operationSelector;
+ }
+
+ public void start() {
+ super.start();
+ try {
+ registerListerner();
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ public void stop() {
+
+ try {
+ consumer.close();
+ jmsResourceFactory.closeConnection();
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ super.stop();
+ }
+
+ private void registerListerner() throws NamingException, JMSException{
+
+ Object entryPointProxy = this.getServiceInstance();
+ QName responseQN = new QName("payload");
+ SDODataBinding dataBinding = new SDODataBinding(typeHelper, false, responseQN);
+
+ Session session = jmsResourceFactory.createSession();
+ Destination destination = session.createQueue(jmsBinding.getDestinationName());
+
+ consumer = session.createConsumer(destination);
+ consumer.setMessageListener(new JMSProxy(entryPointProxy,jmsResourceFactory,jmsBinding,dataBinding,operationSelector));
+
+ jmsResourceFactory.startConnection();
+
+ }
+}