You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by an...@apache.org on 2006/09/26 12:05:37 UTC

svn commit: r449970 [2/2] - in /incubator/tuscany/sandbox/rajith/binding.jms: ./ src/ src/main/ src/main/java/ src/main/java/org/ src/main/java/org/apache/ src/main/java/org/apache/tuscany/ src/main/java/org/apache/tuscany/binding/ src/main/java/org/ap...

Added: incubator/tuscany/sandbox/rajith/binding.jms/src/main/java/org/apache/tuscany/binding/jms/SimpleJMSResourceFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/rajith/binding.jms/src/main/java/org/apache/tuscany/binding/jms/SimpleJMSResourceFactory.java?view=auto&rev=449970
==============================================================================
--- incubator/tuscany/sandbox/rajith/binding.jms/src/main/java/org/apache/tuscany/binding/jms/SimpleJMSResourceFactory.java (added)
+++ incubator/tuscany/sandbox/rajith/binding.jms/src/main/java/org/apache/tuscany/binding/jms/SimpleJMSResourceFactory.java Tue Sep 26 03:05:35 2006
@@ -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);
+	}
+
+}

Propchange: incubator/tuscany/sandbox/rajith/binding.jms/src/main/java/org/apache/tuscany/binding/jms/SimpleJMSResourceFactory.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/sandbox/rajith/binding.jms/src/main/java/org/apache/tuscany/binding/jms/SimpleJMSResourceFactory.java
------------------------------------------------------------------------------
--- svn:ignores (added)
+++ svn:ignores Tue Sep 26 03:05:35 2006
@@ -0,0 +1,14 @@
+target
+*.iws
+*.ipr
+*.iml
+.project
+.classpath
+maven.log
+velocity.log*
+junit*.properties
+surefire*.properties
+.settings
+.deployables
+.wtpmodules
+

Propchange: incubator/tuscany/sandbox/rajith/binding.jms/src/main/java/org/apache/tuscany/binding/jms/SimpleJMSResourceFactory.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: incubator/tuscany/sandbox/rajith/binding.jms/src/main/resources/
------------------------------------------------------------------------------
--- svn:ignores (added)
+++ svn:ignores Tue Sep 26 03:05:35 2006
@@ -0,0 +1,14 @@
+target
+*.iws
+*.ipr
+*.iml
+.project
+.classpath
+maven.log
+velocity.log*
+junit*.properties
+surefire*.properties
+.settings
+.deployables
+.wtpmodules
+

Propchange: incubator/tuscany/sandbox/rajith/binding.jms/src/main/resources/META-INF/
------------------------------------------------------------------------------
--- svn:ignores (added)
+++ svn:ignores Tue Sep 26 03:05:35 2006
@@ -0,0 +1,14 @@
+target
+*.iws
+*.ipr
+*.iml
+.project
+.classpath
+maven.log
+velocity.log*
+junit*.properties
+surefire*.properties
+.settings
+.deployables
+.wtpmodules
+

Propchange: incubator/tuscany/sandbox/rajith/binding.jms/src/main/resources/META-INF/sca/
------------------------------------------------------------------------------
--- svn:ignores (added)
+++ svn:ignores Tue Sep 26 03:05:35 2006
@@ -0,0 +1,14 @@
+target
+*.iws
+*.ipr
+*.iml
+.project
+.classpath
+maven.log
+velocity.log*
+junit*.properties
+surefire*.properties
+.settings
+.deployables
+.wtpmodules
+

Added: incubator/tuscany/sandbox/rajith/binding.jms/src/main/resources/META-INF/sca/default.scdl
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/rajith/binding.jms/src/main/resources/META-INF/sca/default.scdl?view=auto&rev=449970
==============================================================================
--- incubator/tuscany/sandbox/rajith/binding.jms/src/main/resources/META-INF/sca/default.scdl (added)
+++ incubator/tuscany/sandbox/rajith/binding.jms/src/main/resources/META-INF/sca/default.scdl Tue Sep 26 03:05:35 2006
@@ -0,0 +1,16 @@
+<composite name="org.apache.tuscany.binding.jms.JMSBinding">
+  <tuscany:dependency>
+     <group>org.apache.activemq</group>
+     <artifact>activemq-core</artifact>
+     <version>SNAPSHOT</version>
+  </tuscany:dependency>
+  
+  <component name="jms.bindingLoader">
+    <system:implementation.system class="org.apache.tuscany.binding.jms.JMSBindingLoader"/>
+  </component>
+  
+  <component name="jms.bindingBuilder">
+    <system:implementation.system class="org.apache.tuscany.binding.jms.JMSBindingBuilder"/>
+  </component>
+
+</composite>

Propchange: incubator/tuscany/sandbox/rajith/binding.jms/src/main/resources/META-INF/sca/default.scdl
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/sandbox/rajith/binding.jms/src/main/resources/META-INF/sca/default.scdl
------------------------------------------------------------------------------
--- svn:ignores (added)
+++ svn:ignores Tue Sep 26 03:05:35 2006
@@ -0,0 +1,14 @@
+target
+*.iws
+*.ipr
+*.iml
+.project
+.classpath
+maven.log
+velocity.log*
+junit*.properties
+surefire*.properties
+.settings
+.deployables
+.wtpmodules
+

Propchange: incubator/tuscany/sandbox/rajith/binding.jms/src/main/resources/META-INF/sca/default.scdl
------------------------------------------------------------------------------
    svn:keywords = Rev Date



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org