1 /*** 2 * 3 * Copyright 2004 Protique Ltd 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 * 17 **/ 18 package org.codehaus.activemq; 19 20 import javax.jms.Connection; 21 import javax.jms.JMSException; 22 import javax.jms.QueueConnection; 23 import javax.jms.TopicConnection; 24 import javax.jms.XAConnection; 25 import javax.jms.XAConnectionFactory; 26 import javax.jms.XAQueueConnection; 27 import javax.jms.XAQueueConnectionFactory; 28 import javax.jms.XATopicConnection; 29 import javax.jms.XATopicConnectionFactory; 30 31 /*** 32 * The XAConnectionFactory interface is a base interface for the 33 * XAQueueConnectionFactory and XATopicConnectionFactory interfaces. 34 * <p/> 35 * Some application servers provide support for grouping JTS capable resource 36 * use into a distributed transaction (optional). To include JMS API 37 * transactions in a JTS transaction, an application server requires a JTS 38 * aware JMS provider. A JMS provider exposes its JTS support using an 39 * XAConnectionFactory object, which an application server uses to create 40 * XAConnection objects. 41 * <p/> 42 * XAConnectionFactory objects are JMS administered objects, just like 43 * ConnectionFactory objects. It is expected that application servers will 44 * find them using the Java Naming and Directory Interface (JNDI) API. 45 * <p/> 46 * The XAConnectionFactory interface is optional. JMS providers are not 47 * required to support this interface. This interface is for use by JMS 48 * providers to support transactional environments. Client programs are 49 * strongly encouraged to use the transactional support available in their 50 * environment, rather than use these XA interfaces directly. 51 * 52 * @version $Revision: 1.2 $ 53 * @see javax.jms.ConnectionFactory 54 */ 55 public class ActiveMQXAConnectionFactory extends ActiveMQConnectionFactory implements XAConnectionFactory, XAQueueConnectionFactory, XATopicConnectionFactory { 56 57 public ActiveMQXAConnectionFactory() { 58 } 59 60 public ActiveMQXAConnectionFactory(String brokerURL) { 61 super(brokerURL); 62 } 63 64 public ActiveMQXAConnectionFactory(String userName, String password, String brokerURL) { 65 super(userName, password, brokerURL); 66 } 67 68 public XAConnection createXAConnection() throws JMSException { 69 return createActiveMQXAConnection(this.userName, this.password); 70 } 71 72 public XAConnection createXAConnection(String userName, String password) throws JMSException { 73 return createActiveMQXAConnection(userName, password); 74 } 75 76 public XAQueueConnection createXAQueueConnection() throws JMSException { 77 return createActiveMQXAConnection(userName, password); 78 } 79 80 public XAQueueConnection createXAQueueConnection(String userName, String password) throws JMSException { 81 return createActiveMQXAConnection(userName, password); 82 } 83 84 public XATopicConnection createXATopicConnection() throws JMSException { 85 return createActiveMQXAConnection(userName, password); 86 } 87 88 public XATopicConnection createXATopicConnection(String userName, String password) throws JMSException { 89 return createActiveMQXAConnection(userName, password); 90 } 91 92 public Connection createConnection() throws JMSException { 93 return createActiveMQXAConnection(userName, password); 94 } 95 96 public Connection createConnection(String userName, String password) throws JMSException { 97 return createActiveMQXAConnection(userName, password); 98 } 99 100 public QueueConnection createQueueConnection() throws JMSException { 101 return createActiveMQXAConnection(userName, password); 102 } 103 104 public QueueConnection createQueueConnection(String userName, String password) throws JMSException { 105 return createActiveMQXAConnection(userName, password); 106 } 107 108 public TopicConnection createTopicConnection() throws JMSException { 109 return createActiveMQXAConnection(userName, password); 110 } 111 112 public TopicConnection createTopicConnection(String userName, String password) throws JMSException { 113 return createActiveMQXAConnection(userName, password); 114 } 115 116 protected ActiveMQXAConnection createActiveMQXAConnection(String userName, String password) throws JMSException { 117 ActiveMQXAConnection connection = new ActiveMQXAConnection(this, userName, password, createTransportChannel(this.brokerURL)); 118 if (this.clientID != null && this.clientID.length() > 0) { 119 connection.setClientID(this.clientID); 120 } 121 return connection; 122 } 123 }