隨筆-88  評論-77  文章-48  trackbacks-0

          package com.zte.mbean;

          import javax.ejb.MessageDrivenBean;
          import javax.ejb.MessageDrivenContext;
          import javax.ejb.EJBException;
          import javax.jms.JMSException;
          import javax.jms.Message;
          import javax.jms.MessageListener;
          import javax.jms.Queue;
          import javax.jms.QueueConnection;
          import javax.jms.QueueConnectionFactory;
          import javax.jms.QueueSender;
          import javax.jms.QueueSession;
          import javax.jms.TextMessage;
          import javax.naming.InitialContext;
          import javax.naming.NamingException;

          public class TextMDBBean
          ??? implements MessageDrivenBean, MessageListener {
          ? private MessageDrivenContext ctx = null;
          ? private QueueConnection conn;
          ? private QueueSession session;

          ? public TextMDBBean() {
          ??? System.out.println("TextMDB.ctor, this=" + hashCode());
          ? }

          ? public void setMessageDrivenContext(MessageDrivenContext ctx) {
          ??? this.ctx = ctx;
          ??? System.out.println("TextMDB.setMessageDrivenContext, this=" +
          ?????????????????????? hashCode());
          ? }

          ? public void ejbCreate() {
          ??? System.out.println("TextMDB.ejbCreate, this=" + hashCode());
          ??? try {
          ????? setupPTP();
          ??? }
          ??? catch (Exception e) {
          ????? throw new EJBException("Failed to init TextMDB", e);
          ??? }
          ? }

          ? public void ejbRemove() {
          ??? System.out.println("TextMDB.ejbRemove, this=" + hashCode());
          ??? ctx = null;
          ??? try {
          ????? if (session != null) {
          ??????? session.close();
          ????? }
          ????? if (conn != null) {
          ??????? conn.close();
          ????? }
          ??? }
          ??? catch (JMSException e) {
          ????? e.printStackTrace();
          ??? }
          ? }

          ? public void onMessage(Message msg) {
          ??? System.out.println("TextMDB.onMessage, this=" + hashCode());
          ??? try {
          ????? TextMessage tm = (TextMessage) msg;
          ????? String text = tm.getText() + "processed by: " + hashCode();
          ????? Queue dest = (Queue) msg.getJMSReplyTo();
          ????? sendReply(text, dest);
          ??? }
          ??? catch (Throwable t) {
          ????? t.printStackTrace();
          ??? }
          ? }

          ? private void setupPTP() throws JMSException, NamingException {
          ??? InitialContext iniCtx = new InitialContext();
          ??? Object tmp = iniCtx.lookup("java:comp/env/jms/QCF");
          ??? QueueConnectionFactory qcf = (QueueConnectionFactory) tmp;
          ??? conn = qcf.createQueueConnection();
          ??? session = conn.createQueueSession(false,
          ????????????????????????????????????? QueueSession.AUTO_ACKNOWLEDGE);
          ??? conn.start();
          ? }

          ? private void sendReply(String text, Queue dest) throws JMSException {
          ??? System.out.println("TextMDB.sendReply, this=" +
          ?????????????????????? hashCode() + ", dest=" + dest);
          ??? QueueSender sender = session.createSender(dest);
          ??? TextMessage tm = session.createTextMessage(text);
          ??? sender.send(tm);
          ??? sender.close();
          ? }

          }

          posted on 2006-04-24 19:17 崛起的程序員 閱讀(206) 評論(0)  編輯  收藏 所屬分類: java
          主站蜘蛛池模板: 荃湾区| 濮阳县| 敦煌市| 左权县| 广安市| 温州市| 岳阳市| 深州市| 镇远县| 航空| 无极县| 姜堰市| 伊春市| 泰顺县| 萝北县| 承德市| 浦城县| 乌兰察布市| 聂拉木县| 海口市| 东平县| 武安市| 昭通市| 诏安县| 石柱| 衡东县| 迁西县| 天全县| 海阳市| 金昌市| 依安县| 靖边县| 高阳县| 武城县| 色达县| 拉萨市| 迭部县| 庆阳市| 尉犁县| 金寨县| 洪湖市|