diff options
author | dims <dims@13f79535-47bb-0310-9956-ffa450edef68> | 2008-06-17 00:23:01 +0000 |
---|---|---|
committer | dims <dims@13f79535-47bb-0310-9956-ffa450edef68> | 2008-06-17 00:23:01 +0000 |
commit | bdd0a41aed7edf21ec2a65cfa17a86af2ef8c48a (patch) | |
tree | 38a92061c0793434c4be189f1d70c3458b6bc41d /sandbox/rajith/binding.jms/src/main/java/org/apache/tuscany/binding/jms/SimpleJMSResourceFactory.java |
Move Tuscany from Incubator to top level.
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@668359 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sandbox/rajith/binding.jms/src/main/java/org/apache/tuscany/binding/jms/SimpleJMSResourceFactory.java')
-rw-r--r-- | sandbox/rajith/binding.jms/src/main/java/org/apache/tuscany/binding/jms/SimpleJMSResourceFactory.java | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/sandbox/rajith/binding.jms/src/main/java/org/apache/tuscany/binding/jms/SimpleJMSResourceFactory.java b/sandbox/rajith/binding.jms/src/main/java/org/apache/tuscany/binding/jms/SimpleJMSResourceFactory.java new file mode 100644 index 0000000000..399e80e4b5 --- /dev/null +++ b/sandbox/rajith/binding.jms/src/main/java/org/apache/tuscany/binding/jms/SimpleJMSResourceFactory.java @@ -0,0 +1,95 @@ +package org.apache.tuscany.binding.jms; + +import java.util.Properties; + +import javax.jms.Connection; +import javax.jms.ConnectionFactory; +import javax.jms.JMSException; +import javax.jms.Message; +import javax.jms.Session; +import javax.naming.Context; +import javax.naming.InitialContext; +import javax.naming.NamingException; + +public class SimpleJMSResourceFactory implements JMSResourceFactory { + + private JMSBinding jmsBinding; + private Connection con; + private Context context; + private boolean isConnectionStarted; + + public SimpleJMSResourceFactory(JMSBinding jmsBinding){ + this.jmsBinding = jmsBinding; + } + + /* + * This is a simple implementation where a connection is created per binding + * Ideally the resource factory should be able to leverage the host environment + * to provide connection pooling if it can. + * + * For ex If Tuscany is running inside an AppServer + * Then we could leverage the JMS resources it provides + * + * @see org.apache.tuscany.binding.jms.JMSResourceFactory#getConnection() + */ + public Connection getConnection() throws NamingException, JMSException{ + if (con == null){ + createConnection(); + } + return con; + } + + /* (non-Javadoc) + * @see org.apache.tuscany.binding.jms.JMSResourceFactory#createSession() + */ + public Session createSession() throws JMSException, NamingException{ + return getConnection().createSession(false, Session.AUTO_ACKNOWLEDGE); + } + + /* (non-Javadoc) + * @see org.apache.tuscany.binding.jms.JMSResourceFactory#startConnection() + */ + public void startConnection() throws JMSException, NamingException{ + if(!isConnectionStarted){ + getConnection().start(); + isConnectionStarted = true; + } + } + + /* (non-Javadoc) + * @see org.apache.tuscany.binding.jms.JMSResourceFactory#closeConnection() + */ + public void closeConnection() throws JMSException, NamingException{ + if(con != null){ + con.close(); + } + } + + /* (non-Javadoc) + * @see org.apache.tuscany.binding.jms.JMSResourceFactory#createTextMessage(javax.jms.Session) + */ + public Message createMessage(Session session) throws JMSException{ + javax.jms.Message message = session.createTextMessage(); // default + message.setJMSDeliveryMode(jmsBinding.getDeliveryMode()); + message.setJMSPriority(jmsBinding.getPriority()); + + return message; + } + + private void createConnection() throws NamingException, JMSException { + if(context == null){ + createInitialContext(); + } + ConnectionFactory conFac = (ConnectionFactory)context.lookup(jmsBinding.getConnectionFactoryName()); + con = conFac.createConnection(); + } + + private void createInitialContext() throws NamingException{ + Properties props = new Properties(); + props.setProperty(Context.INITIAL_CONTEXT_FACTORY,jmsBinding.getInitialContextFactoryName()); + props.setProperty(Context.PROVIDER_URL,jmsBinding.getJNDIProviderURL()); + + context = new InitialContext(props); + } + +} |