diff options
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.java | 82 |
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(); + + } +} |