001 /* 002 The contents of this file are subject to the Mozilla Public License Version 1.1 003 (the "License"); you may not use this file except in compliance with the License. 004 You may obtain a copy of the License at http://www.mozilla.org/MPL/ 005 Software distributed under the License is distributed on an "AS IS" basis, 006 WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the 007 specific language governing rights and limitations under the License. 008 009 The Original Code is "JMSQueueTransport.java". Description: 010 "A TransportLayer that uses a JMS Queue" 011 012 The Initial Developer of the Original Code is University Health Network. Copyright (C) 013 2004. All Rights Reserved. 014 015 Contributor(s): ______________________________________. 016 017 Alternatively, the contents of this file may be used under the terms of the 018 GNU General Public License (the ?GPL?), in which case the provisions of the GPL are 019 applicable instead of those above. If you wish to allow use of your version of this 020 file only under the terms of the GPL and not to allow others to use your version 021 of this file under the MPL, indicate your decision by deleting the provisions above 022 and replace them with the notice and other provisions required by the GPL License. 023 If you do not delete the provisions above, a recipient may use your version of 024 this file under either the MPL or the GPL. 025 */ 026 027 package ca.uhn.hl7v2.protocol.impl; 028 029 import javax.jms.Connection; 030 import javax.jms.JMSException; 031 import javax.jms.Message; 032 import javax.jms.Queue; 033 import javax.jms.QueueConnection; 034 import javax.jms.QueueReceiver; 035 import javax.jms.QueueSender; 036 import javax.jms.QueueSession; 037 import javax.jms.Session; 038 039 import ca.uhn.hl7v2.protocol.TransportException; 040 041 /** 042 * A <code>TransportLayer</code> that uses a JMS Queue. 043 * 044 * @author <a href="mailto:bryan.tripp@uhn.on.ca">Bryan Tripp</a> 045 * @version $Revision: 1.1 $ updated on $Date: 2007/02/19 02:24:26 $ by $Author: jamesagnew $ 046 */ 047 public class JMSQueueTransport extends AbstractJMSTransport { 048 049 private QueueSession mySendingSession; 050 private QueueSession myReceivingSession; 051 private QueueSender mySender; 052 private QueueReceiver myReceiver; 053 private QueueConnection myConnection; 054 private Queue myQueue; 055 056 /** 057 * @param theConnection 058 * @param theDestination 059 */ 060 public JMSQueueTransport(QueueConnection theConnection, Queue theDestination) { 061 myConnection = theConnection; 062 myQueue = theDestination; 063 } 064 065 /** 066 * @see ca.uhn.hl7v2.protocol.impl.AbstractJMSTransport#getDestinationName() 067 */ 068 protected String getDestinationName() throws JMSException { 069 return myQueue.getQueueName(); 070 } 071 072 /** 073 * @see ca.uhn.hl7v2.protocol.impl.AbstractJMSTransport#getConnection() 074 */ 075 public Connection getConnection() { 076 return myConnection; 077 } 078 079 /** 080 * @see ca.uhn.hl7v2.protocol.impl.AbstractJMSTransport#getMessage() 081 */ 082 protected Message getMessage() throws JMSException { 083 return mySendingSession.createTextMessage(); 084 } 085 086 /** 087 * @see ca.uhn.hl7v2.protocol.impl.AbstractJMSTransport#send(javax.jms.Message) 088 */ 089 protected void sendJMS(Message theMessage) throws JMSException { 090 mySender.send(theMessage); 091 } 092 093 /** 094 * @see ca.uhn.hl7v2.protocol.impl.AbstractJMSTransport#receive() 095 */ 096 protected Message receiveJMS() throws JMSException { 097 return myReceiver.receive(); 098 } 099 100 /** 101 * @see ca.uhn.hl7v2.protocol.impl.AbstractJMSTransport#connect() 102 */ 103 public void doConnect() throws TransportException { 104 boolean transacted = false; 105 int ackMode = Session.AUTO_ACKNOWLEDGE; 106 107 doDisconnect(); 108 try { 109 mySendingSession = myConnection.createQueueSession(transacted, ackMode); 110 mySender = mySendingSession.createSender(myQueue); 111 112 myReceivingSession = myConnection.createQueueSession(transacted, ackMode); 113 myReceiver = myReceivingSession.createReceiver(myQueue); 114 } catch (JMSException e) { 115 throw new TransportException(e); 116 } 117 } 118 119 /** 120 * @see ca.uhn.hl7v2.protocol.impl.AbstractTransport#doDisconnect() 121 */ 122 public void doDisconnect() throws TransportException { 123 try { 124 if (mySendingSession != null) { 125 mySendingSession.close(); 126 } 127 if (myReceivingSession != null) { 128 myReceivingSession.close(); 129 } 130 } catch (JMSException e) { 131 throw new TransportException(e); 132 } 133 } 134 135 }