You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by js...@apache.org on 2002/02/15 16:54:08 UTC
cvs commit: jakarta-commons-sandbox/messenger/src/java/org/apache/commons/messenger JNDISessionFactory.java
jstrachan 02/02/15 07:54:08
Modified: messenger/src/conf Messenger.xml MessengerAshna.xml
MessengerJBoss.xml
messenger/src/java/org/apache/commons/messenger
JNDISessionFactory.java
Log:
Applied Saimon's patch to differentiate between Topic and Queue Connections via a boolean property in the digester XML file as sometimes a Connection object implements both interfaces - such as JBossMQ
Revision Changes Path
1.4 +6 -6 jakarta-commons-sandbox/messenger/src/conf/Messenger.xml
Index: Messenger.xml
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/messenger/src/conf/Messenger.xml,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- Messenger.xml 30 Oct 2001 08:30:09 -0000 1.3
+++ Messenger.xml 15 Feb 2002 15:54:08 -0000 1.4
@@ -4,21 +4,21 @@
<!-- this example Messenger XML config file should work with J2EE SDK -->
<!-- when running inside of a J2EE container -->
- <messenger name="topic">
- <jndi lookupName="java:comp/env/TopicConnectionFactory">
+ <messenger name="topic" jndiDestinations="false">
+ <jndi lookupName="java:comp/env/TopicConnectionFactory" topic="true">
<property>
<name>com.sun.jms.internal.java.naming.factory.initial</name>
<value>com.sun.enterprise.naming.SerialInitContextFactory</value>
- </property>
+ </property>
</jndi>
</messenger>
- <messenger name="queue">
- <jndi lookupName="java:comp/env/QueueConnectionFactory">
+ <messenger name="queue" jndiDestinations="false">
+ <jndi lookupName="java:comp/env/QueueConnectionFactory" topic="false">
<property>
<name>com.sun.jms.internal.java.naming.factory.initial</name>
<value>com.sun.enterprise.naming.SerialInitContextFactory</value>
- </property>
+ </property>
</jndi>
</messenger>
1.2 +2 -2 jakarta-commons-sandbox/messenger/src/conf/MessengerAshna.xml
Index: MessengerAshna.xml
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/messenger/src/conf/MessengerAshna.xml,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- MessengerAshna.xml 15 Feb 2002 11:50:18 -0000 1.1
+++ MessengerAshna.xml 15 Feb 2002 15:54:08 -0000 1.2
@@ -5,7 +5,7 @@
<!-- when running outside of a J2EE container -->
<messenger name="topic" jndiDestinations="true">
- <jndi lookupName="TopicConnectionFactory">
+ <jndi lookupName="TopicConnectionFactory" topic="true">
<property>
<name>java.naming.factory.initial</name>
<value>com.ashnasoft.jms.client.jndi.InitialContextFactoryImpl</value>
@@ -18,7 +18,7 @@
</messenger>
<messenger name="queue" jndiDestinations="true">
- <jndi lookupName="QueueConnectionFactory">
+ <jndi lookupName="QueueConnectionFactory" topic="false">
<property>
<name>java.naming.factory.initial</name>
<value>com.ashnasoft.jms.client.jndi.InitialContextFactoryImpl</value>
1.2 +2 -2 jakarta-commons-sandbox/messenger/src/conf/MessengerJBoss.xml
Index: MessengerJBoss.xml
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/messenger/src/conf/MessengerJBoss.xml,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- MessengerJBoss.xml 15 Feb 2002 11:50:18 -0000 1.1
+++ MessengerJBoss.xml 15 Feb 2002 15:54:08 -0000 1.2
@@ -5,7 +5,7 @@
<!-- when running outside of a J2EE container -->
<messenger name="topic" jndiDestinations="true">
- <jndi lookupName="TopicConnectionFactory">
+ <jndi lookupName="TopicConnectionFactory" topic="true">
<property>
<name>java.naming.factory.initial</name>
<value>org.jnp.interfaces.NamingContextFactory</value>
@@ -22,7 +22,7 @@
</messenger>
<messenger name="queue" jndiDestinations="true">
- <jndi lookupName="QueueConnectionFactory">
+ <jndi lookupName="QueueConnectionFactory" topic="false">
<property>
<name>java.naming.factory.initial</name>
<value>org.jnp.interfaces.NamingContextFactory</value>
1.4 +76 -22 jakarta-commons-sandbox/messenger/src/java/org/apache/commons/messenger/JNDISessionFactory.java
Index: JNDISessionFactory.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/messenger/src/java/org/apache/commons/messenger/JNDISessionFactory.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- JNDISessionFactory.java 29 Aug 2001 10:31:55 -0000 1.3
+++ JNDISessionFactory.java 15 Feb 2002 15:54:08 -0000 1.4
@@ -4,8 +4,8 @@
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE file.
- *
- * $Id: JNDISessionFactory.java,v 1.3 2001/08/29 10:31:55 jstrachan Exp $
+ *
+ * $Id: JNDISessionFactory.java,v 1.4 2002/02/15 15:54:08 jstrachan Exp $
*/
package org.apache.commons.messenger;
@@ -13,42 +13,60 @@
import java.util.Properties;
import javax.jms.ConnectionFactory;
+import javax.jms.Connection;
+import javax.jms.Session;
+import javax.jms.TopicConnection;
+import javax.jms.QueueConnection;
+import javax.jms.TopicConnectionFactory;
+import javax.jms.QueueConnectionFactory;
import javax.jms.JMSException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
+import javax.naming.NamingEnumeration;
/** <p><code>JNDISessionFactory</code> is a Factory of JMS Session objects
* which looks up the ConnectionFactory object from JNDI.</p>
*
* @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
- * @version $Revision: 1.3 $
+ * @version $Revision: 1.4 $
*/
public class JNDISessionFactory extends SessionFactory {
/** the initial JNDI context used to lookup ConnectionFactory objects */
- private Context context;
-
+ public Context context;
+
/** the name used to lookup the ConnectionFactory */
private String lookupName = "TopicConnectionFactory";
-
-
-
+
+ /** Wether Topics or Queue Connections should be forced */
+ private boolean topic = false;
+
// Properties
- //-------------------------------------------------------------------------
-
+ //-------------------------------------------------------------------------
+
/** The JNDI Name of the ConnectionFactory */
public String getLookupName() {
- return lookupName;
+ return lookupName;
}
-
+
/** Sets the JNDI Name of the ConnectionFactory */
public void setLookupName(String lookupName) {
- this.lookupName = lookupName;
+ this.lookupName = lookupName;
+ }
+
+ /** To force Topic or Queue Connections */
+ public void setTopic(boolean topic) {
+ this.topic = topic;
}
-
+
+ /** To force Topic or Queue Connections */
+ public boolean isTopic() {
+ return topic;
+ }
+
/** Returns the JNDI Context used to lookup JMS ConnectionFactory objects */
public Context getContext() throws NamingException {
if ( context == null ) {
@@ -56,21 +74,27 @@
}
return context;
}
-
+
public void setContext(Context context) {
this.context = context;
}
-
+
// Implementation methods
- //-------------------------------------------------------------------------
-
- /** Factory method used to create a connection factory.
+ //-------------------------------------------------------------------------
+
+ /** Factory method used to create a connection factory.
* Lookup the ConnectionFactory in JNDI
*/
protected ConnectionFactory createConnectionFactory() throws JMSException {
try {
- //System.out.println( "Looking up: " + getLookupName() + " in JNDI" );
- return (ConnectionFactory) getContext().lookup( getLookupName() );
+ System.out.println( "Looking up: " + getLookupName() + " in JNDI" );
+
+ if (!topic) {
+ return (QueueConnectionFactory) getContext().lookup(getLookupName());
+ }
+
+ else return (TopicConnectionFactory) getContext().lookup(getLookupName());
+
}
catch (NamingException e) {
JMSException jmsException = new JMSException( "Failed to lookup: " + getLookupName() + " using JNDI. " + e );
@@ -78,7 +102,37 @@
throw jmsException;
}
}
- /** Factory method used to create a connection factory.
+
+ /** Re-implemented from SessionFactory. Method used to create a connection */
+ public Connection createConnection() throws JMSException {
+ ConnectionFactory factory = getConnectionFactory();
+
+ if ( factory == null ) {
+ throw new JMSException( "No ConnectionFactory configured. Cannot create a JMS Session" );
+ }
+
+ if (!topic) {
+ return createQueueConnection((QueueConnectionFactory) factory);
+ }
+
+ else return createTopicConnection((TopicConnectionFactory) factory);
+ }
+
+ /** Re-implemented from SessionFactory. Creates a new Session instance */
+ public Session createSession(Connection connection) throws JMSException {
+
+ if (!topic) {
+ QueueConnection queueConnection = (QueueConnection) connection;
+ return queueConnection.createQueueSession( isTransacted(), getAcknowledgeMode() );
+ }
+
+ else {
+ TopicConnection topicConnection = (TopicConnection) connection;
+ return topicConnection.createTopicSession( isTransacted(), getAcknowledgeMode() );
+ }
+ }
+
+ /** Factory method used to create a connection factory.
* Derived classes may wish to use JNDI to load the ConnectionFactory
*/
protected Context createContext() throws NamingException {
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>