⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 queuereceiveintx.java

📁 weblogic应用全实例
💻 JAVA
字号:
//声明这个类定义在包examples.jms.queue中
package examples.jms.queue;
//声明这个类引入的其它类和包
import java.io.*;
import java.util.*;
import javax.transaction.*;
import javax.naming.*;
import javax.jms.*;

/**
 * 这个实例演示怎样创建一个连接,在一个客户端事务中接收JMS队列中的消息。
 * 这个目录中的例子操作同一个JMS队列。一起运行这些类观察消息发送和接收。
 * 浏览队列中的消息。
 */
public class QueueReceiveInTx
{
/**
 * 定义JNDI上下文构造器
 */
  public final static String JNDI_FACTORY="weblogic.jndi.WLInitialContextFactory";
/**
 * 定义JMS队列连接构造器
 */
  public final static String JMS_FACTORY="weblogic.examples.jms.QueueConnectionFactory";
/**
 * 定义队列
 */
  public final static String QUEUE="weblogic.examples.jms.exampleQueue";
  //声明队列连接构造器
  private QueueConnectionFactory qconFactory;
  //声明队列连接
  private QueueConnection qcon;
  //声明队列会话
  private QueueSession qsession;
  //声明队列接收
  private QueueReceiver qreceiver;
  //声明队列
  private Queue queue;
  private boolean quit = false;
  //声明用户事务
  private UserTransaction utx;
/**
 * 接收消息
 */
  public void receiveMessages()
  {
    Message msg = null;
    String msgText = "";

    try {
      //事务开始定义
      utx.begin();
      System.out.println("TRANSACTION BEGUN");
      do {
      	//接收消息
        msg = qreceiver.receive();
        if (msg != null) {
          if (msg instanceof TextMessage) {
          //获取文本
            msgText = ((TextMessage)msg).getText();
          } else {
            msgText = msg.toString();
          }
          System.out.println("Message Received: "+ msgText );
          if (msgText.equalsIgnoreCase("quit")) {
            //触发事务
            utx.commit();
            System.out.println("TRANSACTION COMMITTED");
          }
        }
      } while(msg != null && ! msgText.equals("quit"));
    } catch (JMSException jmse) {
    //打印异常
      System.out.println("Error receiving JMS message: "+jmse);
      jmse.printStackTrace();
    } catch (javax.transaction.NotSupportedException nse) {
    //打印异常
      System.out.println("TRANSACTION COULD NOT BEGIN DUE TO: "+ nse);      
    } catch (javax.transaction.RollbackException rbe) {
    //打印异常	
      System.out.println("TRANSACTION ROLLED BACK DUE TO: "+rbe);
    } catch (javax.transaction.HeuristicRollbackException hre) {
    //打印异常	
      System.out.println("TRANSACTION ROLLED BACK DUE TO: "+hre);
    } catch (javax.transaction.HeuristicMixedException hme) {
    //打印异常	
      System.out.println("TRANSACTION ROLLED BACK DUE TO: "+hme);
    } catch (javax.transaction.SystemException se) {
    //打印异常	
      System.out.println("TRANSACTION EXCEPTION: "+se);
    }
  }

  /**
   * 创建所有从JMS队列接收消息必要的对象
   *
   * @参数   ctx	JNDI初始化上下文
   * @参数	queueName	队列名
   * @异常 NamingException 如果操作不能执行
   * @异常 JMSException 由于内部错误,JMS 初始化失败抛出的异常
   */
  public void init(Context ctx, String queueName)
       throws NamingException, JMSException
  {
     //查找连接构造器	
    qconFactory = (QueueConnectionFactory) ctx.lookup(JMS_FACTORY);
    //创建队列连接
    qcon = qconFactory.createQueueConnection();
    //创建队列会话
    qsession = qcon.createQueueSession(false, Session.CLIENT_ACKNOWLEDGE);
    //查找用户事务
    utx = (UserTransaction) ctx.lookup("javax.transaction.UserTransaction");
    //查找消息队列
    queue = (Queue) ctx.lookup(queueName);
    //创建消息接收
    qreceiver = qsession.createReceiver(queue);
    //启动连接
    qcon.start();
  }

  /**
   * 关闭JMS对象
   * @异常 JMSException 由于内部错误,JMS不能关闭对象抛出的异常
   */
  public void close()
       throws JMSException
  {
    //关闭接收器,会话和连接
    qreceiver.close();
    qsession.close();
    qcon.close();
  }
/**
  * main()方法
  *
  * @参数s args  WebLogic服务器URL 
  * @异常  Exception 如果执行错误
  */
  public static void main(String[] args)
       throws Exception 
  {
    if (args.length != 1) {
    //打印用法提示
      System.out.println("用法:java examples.jms.queue.QueueReceiveInTx WebLogicURL");
      return;
    }
    //上下文初始化
    InitialContext ic = getInitialContext(args[0]);
    //本类实例
    QueueReceiveInTx qr = new QueueReceiveInTx();
    //初始化
    qr.init(ic, QUEUE);

    System.out.println("JMS Ready To Receive Messages (To quit, send a \"quit\" message).");
    //接收消息本类定义的方法
    qr.receiveMessages();
    //关闭,本类定义的方法
    qr.close();
  }
  //初始化名称服务上下文
  private static InitialContext getInitialContext(String url)
       throws NamingException
  {
    //属性对象
    Hashtable env = new Hashtable();
    //设置属性
    env.put(Context.INITIAL_CONTEXT_FACTORY, JNDI_FACTORY);
    env.put(Context.PROVIDER_URL, url);
    return new InitialContext(env);
  }

}




⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -