1 package org.objectweb.celtix.bus.transports.jms; 2 3 import javax.jms.Connection ; 4 import javax.jms.Destination ; 5 import javax.jms.JMSException ; 6 import javax.jms.QueueConnectionFactory ; 7 import javax.jms.TopicConnectionFactory ; 8 import javax.naming.Context ; 9 import javax.naming.NamingException ; 10 11 import org.objectweb.celtix.transports.jms.JMSAddressPolicyType; 12 import org.objectweb.celtix.transports.jms.JMSServerBehaviorPolicyType; 13 14 15 30 public final class JMSProviderHub { 31 32 35 private JMSProviderHub() { 36 } 37 38 public String toString() { 40 return "JMSProviderHub"; 41 } 42 43 44 46 protected static void connect(JMSTransportBase transport) throws JMSException , NamingException { 47 JMSAddressPolicyType addrDetails = transport.getJmsAddressDetails(); 48 JMSServerBehaviorPolicyType serverPolicy = null; 49 if (transport instanceof JMSServerTransport) { 50 serverPolicy = ((JMSServerTransport)transport).getJMSServerBehaviourPolicy(); 51 } 52 53 Context context = JMSUtils.getInitialContext(addrDetails); 56 Connection connection = null; 57 58 if (JMSConstants.JMS_QUEUE.equals(addrDetails.getDestinationStyle().value())) { 59 QueueConnectionFactory qcf = 60 (QueueConnectionFactory )context.lookup(addrDetails.getJndiConnectionFactoryName()); 61 if (addrDetails.isSetConnectionUserName()) { 62 connection = qcf.createQueueConnection(addrDetails.getConnectionUserName(), 63 addrDetails.getConnectionPassword()); 64 } else { 65 connection = qcf.createQueueConnection(); 66 } 67 } else { 68 TopicConnectionFactory tcf = 69 (TopicConnectionFactory )context.lookup(addrDetails.getJndiConnectionFactoryName()); 70 if (addrDetails.isSetConnectionUserName()) { 71 connection = tcf.createTopicConnection(addrDetails.getConnectionUserName(), 72 addrDetails.getConnectionPassword()); 73 } else { 74 connection = tcf.createTopicConnection(); 75 } 76 } 77 78 connection.start(); 79 80 Destination requestDestination = 81 (Destination )context.lookup( 82 addrDetails.getJndiDestinationName()); 83 84 Destination replyDestination = (null != addrDetails.getJndiReplyDestinationName()) 85 ? (Destination )context.lookup(addrDetails.getJndiReplyDestinationName()) : null; 86 87 91 JMSSessionFactory sf = 92 new JMSSessionFactory(connection, 93 replyDestination, 94 addrDetails, 95 serverPolicy, 96 context); 97 98 transport.connected(requestDestination, replyDestination, sf); 101 } 102 } 103 | Popular Tags |