View Javadoc

1   /***
2    * Redistribution and use of this software and associated documentation
3    * ("Software"), with or without modification, are permitted provided
4    * that the following conditions are met:
5    *
6    * 1. Redistributions of source code must retain copyright
7    *    statements and notices.  Redistributions must also contain a
8    *    copy of this document.
9    *
10   * 2. Redistributions in binary form must reproduce the
11   *    above copyright notice, this list of conditions and the
12   *    following disclaimer in the documentation and/or other
13   *    materials provided with the distribution.
14   *
15   * 3. The name "Exolab" must not be used to endorse or promote
16   *    products derived from this Software without prior written
17   *    permission of Exoffice Technologies.  For written permission,
18   *    please contact info@exolab.org.
19   *
20   * 4. Products derived from this Software may not be called "Exolab"
21   *    nor may "Exolab" appear in their names without prior written
22   *    permission of Exoffice Technologies. Exolab is a registered
23   *    trademark of Exoffice Technologies.
24   *
25   * 5. Due credit should be given to the Exolab Project
26   *    (http://www.exolab.org/).
27   *
28   * THIS SOFTWARE IS PROVIDED BY EXOFFICE TECHNOLOGIES AND CONTRIBUTORS
29   * ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
30   * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
31   * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
32   * EXOFFICE TECHNOLOGIES OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
33   * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
34   * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
35   * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
36   * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
37   * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
38   * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
39   * OF THE POSSIBILITY OF SUCH DAMAGE.
40   *
41   * Copyright 2001-2005 (C) Exoffice Technologies Inc. All Rights Reserved.
42   *
43   * $Id: JmsXAConnectionFactory.java,v 1.1 2005/03/18 03:36:37 tanderson Exp $
44   */
45  package org.exolab.jms.client;
46  
47  import java.util.Map;
48  import javax.jms.JMSException;
49  import javax.jms.JMSSecurityException;
50  import javax.jms.XAConnection;
51  import javax.jms.XAConnectionFactory;
52  import javax.jms.XAQueueConnection;
53  import javax.jms.XAQueueConnectionFactory;
54  import javax.jms.XATopicConnection;
55  import javax.jms.XATopicConnectionFactory;
56  
57  import org.exolab.jms.common.uuid.UUID;
58  
59  
60  /***
61   * Client implementation of the <code>javax.jms.XAConnectionFactory</code>
62   * interface.
63   *
64   * @author <a href="mailto:jima@comware.com.au">Jim Alateras</a>
65   * @author <a href="mailto:tma@netspace.net.au">Tim Anderson</a>
66   * @version $Revision: 1.1 $ $Date: 2005/03/18 03:36:37 $
67   */
68  public class JmsXAConnectionFactory
69          extends JmsConnectionFactory
70          implements XAConnectionFactory, XAQueueConnectionFactory,
71          XATopicConnectionFactory {
72  
73      /***
74       * Default constructor required for serialization.
75       */
76      public JmsXAConnectionFactory() {
77      }
78  
79      /***
80       * Construct a new <code>JmsXAConnectionFactory</code>.
81       *
82       * @param className  the server proxy class name
83       * @param properties properties to initialise the server proxy with proxy.
84       *                   May be <code>null</code>
85       */
86      public JmsXAConnectionFactory(String className, Map properties) {
87          this(className, properties, null);
88      }
89  
90      /***
91       * Construct a new <code>JmsXAConnectionFactory</code>.
92       *
93       * @param className   the server proxy class name
94       * @param properties  properties to initialise the server proxy with
95       * @param environment the environment used in creating the server proxy. May
96       *                    be <code>null</code>
97       */
98      public JmsXAConnectionFactory(String className, Map properties,
99                                    Map environment) {
100         super(className, properties, environment);
101     }
102 
103     /***
104      * Creates an XA connection with the default user identity. The
105      * connection is created in stopped mode. No messages will be delivered
106      * until the <code>Connection.start</code> method is explicitly called.
107      *
108      * @return a newly created <code>XAConnection</code>
109      * @throws JMSException         if the JMS provider fails to create an XA
110      *                              connection due to some internal error.
111      * @throws JMSSecurityException if client authentication fails due to an
112      *                              invalid user name or password.
113      */
114     public XAConnection createXAConnection() throws JMSException {
115         return createXAConnection(null, null);
116     }
117 
118     /***
119      * Creates an XA connection with the specified user identity.
120      * The connection is created in stopped mode. No messages will be delivered
121      * until the <code>Connection.start</code> method is explicitly called.
122      *
123      * @param userName the caller's user name
124      * @param password the caller's password
125      * @return a newly created XA connection
126      * @throws JMSException         if the JMS provider fails to create an XA
127      *                              connection due to some internal error.
128      * @throws JMSSecurityException if client authentication fails due to an
129      *                              invalid user name or password.
130      */
131     public XAConnection createXAConnection(String userName, String password)
132             throws JMSException {
133         String id = UUID.next();
134         JmsXAConnection connection = new JmsXAConnection(this, id, userName,
135                                                          password);
136         addConnection(connection);
137         return connection;
138     }
139 
140     /***
141      * Creates an XA queue connection with the default user identity. The
142      * connection is created in stopped mode. No messages will be delivered
143      * until the <code>Connection.start</code> method is explicitly called.
144      *
145      * @return a newly created XA queue connection
146      * @throws JMSException         if the JMS provider fails to create an XA
147      *                              queue connection due to some internal
148      *                              error.
149      * @throws JMSSecurityException if client authentication fails due to an
150      *                              invalid user name or password.
151      */
152     public XAQueueConnection createXAQueueConnection() throws JMSException {
153         return createXAQueueConnection(null, null);
154     }
155 
156     /***
157      * Creates an XA queue connection with the specified user identity. The
158      * connection is created in stopped mode. No messages will be delivered
159      * until the <code>Connection.start</code> method is explicitly called.
160      *
161      * @param userName the caller's user name
162      * @param password the caller's password
163      * @return a newly created XA queue connection
164      * @throws JMSException         if the JMS provider fails to create an XA
165      *                              queue connection due to some internal
166      *                              error.
167      * @throws JMSSecurityException if client authentication fails due to an
168      *                              invalid user name or password.
169      */
170 
171     public XAQueueConnection createXAQueueConnection(String userName,
172                                                      String password)
173             throws JMSException {
174         String id = UUID.next();
175         JmsXAQueueConnection connection = new JmsXAQueueConnection(this, id,
176                                                                    userName,
177                                                                    password);
178         addConnection(connection);
179         return connection;
180     }
181 
182     /***
183      * Creates an XA topic connection with the default user identity. The
184      * connection is created in stopped mode. No messages will be delivered
185      * until the <code>Connection.start</code> method is explicitly called.
186      *
187      * @return a newly created XA topic connection
188      * @throws JMSException         if the JMS provider fails to create an XA
189      *                              topic connection due to some internal
190      *                              error.
191      * @throws JMSSecurityException if client authentication fails due to an
192      *                              invalid user name or password.
193      */
194 
195     public XATopicConnection createXATopicConnection() throws JMSException {
196         return createXATopicConnection(null, null);
197     }
198 
199     /***
200      * Creates an XA topic connection with the specified user identity. The
201      * connection is created in stopped mode. No messages will be delivered
202      * until the <code>Connection.start</code> method is explicitly called.
203      *
204      * @param userName the caller's user name
205      * @param password the caller's password
206      * @return a newly created XA topic connection
207      * @throws JMSException         if the JMS provider fails to create an XA
208      *                              topic connection due to some internal
209      *                              error.
210      * @throws JMSSecurityException if client authentication fails due to an
211      *                              invalid user name or password.
212      */
213 
214     public XATopicConnection createXATopicConnection(String userName,
215                                                      String password)
216             throws JMSException {
217         String id = UUID.next();
218         JmsXATopicConnection connection = new JmsXATopicConnection(this, id,
219                                                                    userName,
220                                                                    password);
221         addConnection(connection);
222         return connection;
223     }
224 
225 }