jms102bsupport.java
来自「提供ESB 应用mule源代码 提供ESB 应用mule源代码」· Java 代码 · 共 275 行
JAVA
275 行
/* * $Id: Jms102bSupport.java 12975 2008-10-09 10:17:43Z dirk.olmes $ * -------------------------------------------------------------------------------------- * Copyright (c) MuleSource, Inc. All rights reserved. http://www.mulesource.com * * The software in this package is published under the terms of the CPAL v1.0 * license, a copy of which has been included with this distribution in the * LICENSE.txt file. */package org.mule.transport.jms;import javax.jms.Connection;import javax.jms.ConnectionFactory;import javax.jms.DeliveryMode;import javax.jms.Destination;import javax.jms.JMSException;import javax.jms.Message;import javax.jms.MessageConsumer;import javax.jms.MessageProducer;import javax.jms.Queue;import javax.jms.QueueConnection;import javax.jms.QueueConnectionFactory;import javax.jms.QueueSender;import javax.jms.QueueSession;import javax.jms.Session;import javax.jms.Topic;import javax.jms.TopicConnection;import javax.jms.TopicConnectionFactory;import javax.jms.TopicPublisher;import javax.jms.TopicSession;/** * <code>Jms102bSupport</code> is a template class to provide an absstraction * to to the Jms 1.0.2b api specification. * */public class Jms102bSupport extends Jms11Support{ public Jms102bSupport(JmsConnector connector) { super(connector); } public Connection createConnection(ConnectionFactory connectionFactory, String username, String password) throws JMSException { if (connectionFactory == null) { throw new IllegalArgumentException("connectionFactory cannot be null"); } if (connectionFactory instanceof QueueConnectionFactory) { return ((QueueConnectionFactory) connectionFactory).createQueueConnection(username, password); } else if (connectionFactory instanceof TopicConnectionFactory) { return ((TopicConnectionFactory) connectionFactory).createTopicConnection(username, password); } else { throw new IllegalArgumentException("Unsupported ConnectionFactory type: " + connectionFactory.getClass().getName()); } } public Connection createConnection(ConnectionFactory connectionFactory) throws JMSException { if (connectionFactory == null) { throw new IllegalArgumentException("connectionFactory cannot be null"); } if (connectionFactory instanceof QueueConnectionFactory) { return ((QueueConnectionFactory) connectionFactory).createQueueConnection(); } else if (connectionFactory instanceof TopicConnectionFactory) { return ((TopicConnectionFactory) connectionFactory).createTopicConnection(); } else { throw new IllegalArgumentException("Unsupported ConnectionFactory type: " + connectionFactory.getClass().getName()); } } public Session createSession(Connection connection, boolean topic, boolean transacted, int ackMode, boolean noLocal) throws JMSException { if (topic && connection instanceof TopicConnection) { return ((TopicConnection) connection).createTopicSession(noLocal, ackMode); } else if (connection instanceof QueueConnection) { // for transacted sessions the ackMode is always ignored, but // set it for readability (SESSION_TRANSACTION is recommented // for this case). return ((QueueConnection) connection).createQueueSession( transacted, (transacted ? Session.SESSION_TRANSACTED : ackMode)); } else { throw new IllegalArgumentException("Connection and domain type do not match"); } } public MessageConsumer createConsumer(Session session, Destination destination, String messageSelector, boolean noLocal, String durableName, boolean topic) throws JMSException { if (topic && session instanceof TopicSession) { if (durableName == null) { return ((TopicSession) session).createSubscriber((Topic) destination, messageSelector, noLocal); } else { // DO NOT REMOVE THE CAST, breaks Weblogic return ((TopicSession) session).createDurableSubscriber((Topic) destination, durableName, messageSelector, noLocal); } } else if (session instanceof QueueSession) { if (messageSelector != null) { return ((QueueSession) session).createReceiver((Queue) destination, messageSelector); } else { return ((QueueSession) session).createReceiver((Queue) destination); } } else { throw new IllegalArgumentException("MuleSession and domain type do not match"); } } public MessageProducer createProducer(Session session, Destination dest, boolean topic) throws JMSException { if (topic && session instanceof TopicSession) { return ((TopicSession) session).createPublisher((Topic) dest); } else if (session instanceof QueueSession) { return ((QueueSession) session).createSender((Queue) dest); } else { throw new IllegalArgumentException("MuleSession and domain type do not match"); } } public Destination createDestination(Session session, String name, boolean topic) throws JMSException { if (connector.isJndiDestinations()) { Destination dest = this.getJndiDestination(name); if (dest != null) { return dest; } else if (connector.isForceJndiDestinations()) { throw new JMSException("JNDI destination not found with name: " + name); } } if (session == null) { throw new IllegalArgumentException("MuleSession cannot be null when creating a destination"); } if (name == null) { throw new IllegalArgumentException("Destination name cannot be null when creating a destination"); } if (topic) { // DO NOT REMOVE THE CAST, BREAKS WEBLOGIC 8.X return ((TopicSession) session).createTopic(name); } else { // DO NOT REMOVE THE CAST, BREAKS WEBLOGIC 8.X return ((QueueSession) session).createQueue(name); } } public Destination createTemporaryDestination(Session session, boolean topic) throws JMSException { if (session == null) { throw new IllegalArgumentException("MuleSession cannot be null when creating a destination"); } if (topic) { // DO NOT REMOVE THE CAST, BREAKS WEBLOGIC 8.X return ((TopicSession) session).createTemporaryTopic(); } else { // DO NOT REMOVE THE CAST, BREAKS WEBLOGIC 8.X return ((QueueSession) session).createTemporaryQueue(); } } public void send(MessageProducer producer, Message message, boolean persistent, int priority, long ttl, boolean topic) throws JMSException { if (topic && producer instanceof TopicPublisher) { ((TopicPublisher) producer).publish( message, (persistent ? DeliveryMode.PERSISTENT : DeliveryMode.NON_PERSISTENT), priority, ttl); } else if (producer instanceof QueueSender) { // DO NOT REMOVE THIS CAST, it breaks Weblogic ((QueueSender) producer).send( message, (persistent ? DeliveryMode.PERSISTENT : DeliveryMode.NON_PERSISTENT), priority, ttl); } else { throw new IllegalArgumentException("Producer and domain type do not match"); } } public void send(MessageProducer producer, Message message, Destination dest, boolean persistent, int priority, long ttl, boolean topic) throws JMSException { if (topic && producer instanceof TopicPublisher) { ((TopicPublisher) producer).publish( (Topic) dest, message, (persistent ? DeliveryMode.PERSISTENT : DeliveryMode.NON_PERSISTENT), priority, ttl); } else if (producer instanceof QueueSender) { ((QueueSender) producer).send( (Queue) dest, message, (persistent ? DeliveryMode.PERSISTENT : DeliveryMode.NON_PERSISTENT), priority, ttl); } else { throw new IllegalArgumentException("Producer and domain type do not match"); } }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?