001: /*
002: * JOnAS: Java(TM) Open Application Server
003: * Copyright (C) 1999 Bull S.A.
004: * Contact: jonas-team@objectweb.org
005: *
006: * This library is free software; you can redistribute it and/or
007: * modify it under the terms of the GNU Lesser General Public
008: * License as published by the Free Software Foundation; either
009: * version 2.1 of the License, or any later version.
010: *
011: * This library is distributed in the hope that it will be useful,
012: * but WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
014: * Lesser General Public License for more details.
015: *
016: * You should have received a copy of the GNU Lesser General Public
017: * License along with this library; if not, write to the Free Software
018: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
019: * USA
020: * --------------------------------------------------------------------------
021: * $Id: JQueueConnection.java 4408 2004-03-19 14:31:54Z sauthieg $
022: * --------------------------------------------------------------------------
023: */
024:
025: package org.objectweb.jonas_jms;
026:
027: import javax.jms.ConnectionConsumer;
028: import javax.jms.JMSException;
029: import javax.jms.Queue;
030: import javax.jms.QueueConnection;
031: import javax.jms.QueueSession;
032: import javax.jms.ServerSessionPool;
033: import javax.jms.XAConnection;
034: import javax.jms.XAQueueConnection;
035: import javax.jms.XAQueueConnectionFactory;
036:
037: import org.objectweb.util.monolog.api.BasicLevel;
038:
039: /**
040: *
041: * @author Laurent Chauvirey, Frederic Maistre, Nicolas Tachker
042: * Contributor(s):
043: * Philippe Durieux
044: * Jeff Mesnil
045: *
046: */
047:
048: public class JQueueConnection extends JConnection implements
049: QueueConnection {
050:
051: // The XAQueueConnection used in the MOM
052: protected XAQueueConnection xaqc = null;
053:
054: /**
055: * Constructor of a JQueueConnection for a specified user.
056: *
057: * @param user user's name
058: * @param passwd user's password
059: */
060: public JQueueConnection(JConnectionFactory jcf,
061: XAQueueConnectionFactory xaqcf, String user, String passwd)
062: throws JMSException {
063: super (jcf, user);
064:
065: // Create the underlaying XAQueueConnection
066: xaqc = xaqcf.createXAQueueConnection(user, passwd);
067: this .xac = (XAConnection) xaqc;
068: }
069:
070: /**
071: * Constructor of a JQueueConnection for an anonymous user.
072: */
073: public JQueueConnection(JConnectionFactory jcf,
074: XAQueueConnectionFactory xaqcf) throws JMSException {
075:
076: super (jcf, INTERNAL_USER_NAME);
077: xaqc = xaqcf.createXAQueueConnection();
078: this .xac = (XAConnection) xaqc;
079: }
080:
081: // -----------------------------------------------------------------------
082: // QueueConnection implementation
083: // -----------------------------------------------------------------------
084:
085: /**
086: * Create a connection consumer for this connection
087: * @param queue - the queue to access
088: * @param selector - only messages with properties matching the message
089: * selector expression aredelivered
090: * @param sessionPool - the server session pool to associate with this connection consumer.
091: * @param maxMessages - the maximum number of messages that can be assigned
092: * to a server session at one time.
093: * @return the connection consumer.
094: * @throws JMSException - if JMS Connection fails to create a a connection consumer
095: * due to some internal error or invalid arguments for sessionPool and message selector.
096: * @throws InvalidSelectorException - if the message selector is invalid.
097: */
098: public ConnectionConsumer createConnectionConsumer(Queue queue,
099: String selector, ServerSessionPool pool, int maxmessages)
100: throws JMSException {
101: TraceJms.logger.log(BasicLevel.DEBUG, "");
102: return xaqc.createConnectionConsumer(queue, selector, pool,
103: maxmessages);
104: }
105:
106: /**
107: * Create a Queue Session
108: * @param transacted - if true, the session is transacted.
109: * @param acknowledgeMode - indicates whether the consumer or the client will
110: * acknowledge any messages it receives.
111: * This parameter will be ignored if the session is transacted.
112: * @return a newly created queue session.
113: * @throws JMSException - if JMS Connection fails to create a session.
114: */
115: public QueueSession createQueueSession(boolean transacted,
116: int acknowledgeMode) throws JMSException {
117: TraceJms.logger.log(BasicLevel.DEBUG, "");
118: return new JQueueSession(this, xaqc);
119: }
120: }
|