`

weblogic jms

    博客分类:
  • JMS
 
阅读更多

package jms;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Hashtable;

import javax.jms.BytesMessage;
import javax.jms.JMSException;
import javax.jms.MapMessage;
import javax.jms.ObjectMessage;
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.StreamMessage;
import javax.jms.TextMessage;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

public class QueueSend {

 // Defines the JNDI context factory.
 public final static String JNDI_FACTORY = "weblogic.jndi.WLInitialContextFactory";

 // Defines the JNDI provider url.
 public final static String PROVIDER_URL = "t3://localhost:7001";

 // Defines the JMS connection factory for the queue.
 public final static String JMS_FACTORY = "myjmsconnectionfactory";

 // Defines the queue 用的是对应 QUEUE的JNDI名子
 public final static String QUEUE = "myjmsqueue";

 private QueueConnectionFactory qconFactory;

 private QueueConnection qcon;

 private QueueSession qsession;

 private QueueSender qsender;

 private Queue queue;

 private TextMessage msg;

 private StreamMessage sm;

 private BytesMessage bm;

 private MapMessage mm;

 private ObjectMessage om;

 /**
  * Creates all the necessary objects for sending messages to a JMS queue.
  *
  * @param ctx
  *            JNDI initial context
  * @param queueName
  *            name of queue
  * @exception NamingException
  *                if operation cannot be performed
  * @exception JMSException
  *                if JMS fails to initialize due to internal error
  */
 public void init(Context ctx, String queueName) throws NamingException, JMSException {
  qconFactory = (QueueConnectionFactory) ctx.lookup(JMS_FACTORY);
  qcon = qconFactory.createQueueConnection();
  qsession = qcon.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
  queue = (Queue) ctx.lookup(queueName);
  qsender = qsession.createSender(queue);

  msg = qsession.createTextMessage();
  sm = qsession.createStreamMessage();
  bm = qsession.createBytesMessage();
  mm = qsession.createMapMessage();
  om = qsession.createObjectMessage();

  qcon.start();
 }

 /**
  * Sends a message to a JMS queue.
  *
  * @param message
  *            message to be sent
  * @exception JMSException
  *                if JMS fails to send message due to internal error
  */
 public void send(String message) throws JMSException {
  // set TextMessage
  msg.setText(message);

  // set StreamMessage
  sm.writeString("xmddl369");
  sm.writeDouble(23.33);

  // set BytesMessage
  String name = "xmddl369";
  byte[] block = name.getBytes();
  bm.writeBytes(block);

  // set MapMessage
  mm.setString("name", "xmddl369");

  // set ObjectMessage
  UserInfo ui = new UserInfo();
  ui.setName("xmddl369");
  ui.setAddress("厦门");
  ui.setAge(100);
  om.setObject(ui);

  qsender.send(msg);
  qsender.send(sm);
  qsender.send(bm);
  qsender.send(mm);
  qsender.send(om);
 }

 /**
  * Closes JMS objects.
  *
  * @exception JMSException
  *                if JMS fails to close objects due to internal error
  */
 public void close() throws JMSException {
  qsender.close();
  qsession.close();
  qcon.close();
 }

 public static void main(String[] args) throws Exception {
  InitialContext ic = getInitialContext();
  QueueSend qs = new QueueSend();
  qs.init(ic, QUEUE);
  //readAndSend(qs);
  qs.send("ddd");
  qs.close();
 }

 private static void readAndSend(QueueSend qs) throws IOException, JMSException {
  BufferedReader msgStream = new BufferedReader(new InputStreamReader(System.in));
  String line = null;
  boolean quitNow = false;
  do {
   System.out.print("Enter message (\"quit\" to quit): ");
   line = msgStream.readLine();
   if (line != null && line.trim().length() != 0) {
    qs.send(line);
    System.out.println("JMS Message Sent: " + line + "\n");
    quitNow = line.equalsIgnoreCase("quit");
   }
  } while (!quitNow);

 }

 private static InitialContext getInitialContext() throws NamingException {
  Hashtable env = new Hashtable();
  env.put(Context.INITIAL_CONTEXT_FACTORY, JNDI_FACTORY);
  env.put(Context.PROVIDER_URL, PROVIDER_URL);
  return new InitialContext(env);
 }
}

 

package jms;

import java.util.Hashtable;
import javax.jms.BytesMessage;
import javax.jms.JMSException;
import javax.jms.MapMessage;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.ObjectMessage;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueReceiver;
import javax.jms.QueueSession;
import javax.jms.Session;
import javax.jms.StreamMessage;
import javax.jms.TextMessage;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

/**
 *
 * @author Administrator
 *
 *         <pre>
 *      修改版本:  修改人:  修改日期:  修改内容:
 * </pre>
 */
public class QueueReceive implements MessageListener {
 // Defines the JNDI context factory.
 public final static String JNDI_FACTORY = "weblogic.jndi.WLInitialContextFactory";

 // Defines the JNDI provider url.
 public final static String PROVIDER_URL = "t3://localhost:7001";

 // Defines the JMS connection factory for the queue.
 public final static String JMS_FACTORY = "myjmsconnectionfactory";

 // Defines the queue 用的是对应 QUEUE的JNDI名子
 public final static String QUEUE = "myjmsqueue";

 private QueueConnectionFactory qconFactory;

 private QueueConnection qcon;

 private QueueSession qsession;

 private QueueReceiver qreceiver;

 private Queue queue;

 private boolean quit = false;

 /**
  * Message listener interface.
  *
  * @param msg
  *            message
  */
 public void onMessage(Message msg) {
  try {
   String msgText = "";
   double d = 0;

   if (msg instanceof TextMessage) {
    msgText = ((TextMessage) msg).getText();
   } else if (msg instanceof StreamMessage) {
    msgText = ((StreamMessage) msg).readString();
    d = ((StreamMessage) msg).readDouble();
   } else if (msg instanceof BytesMessage) {
    byte[] block = new byte[1024];
    ((BytesMessage) msg).readBytes(block);
    msgText = String.valueOf(block);
   } else if (msg instanceof MapMessage) {
    msgText = ((MapMessage) msg).getString("name");
   } else if (msg instanceof ObjectMessage) {
    UserInfo ui = (UserInfo) ((ObjectMessage) msg).getObject();
    msgText = ui.getName();
    d = ui.getAge();
   }

   System.out.println("Message Received: " + msgText + "\t" + d);

   if (msgText.equalsIgnoreCase("quit")) {
    synchronized (this) {
     quit = true;
     this.notifyAll(); // Notify main thread to quit
    }
   }
  } catch (JMSException jmse) {
   jmse.printStackTrace();
  }
 }

 /**
  * Creates all the necessary objects for receiving messages from a JMS
  * queue.
  *
  * @param ctx
  *            JNDI initial context
  * @param queueName
  *            name of queue
  * @exception NamingException
  *                if operation cannot be performed
  * @exception JMSException
  *                if JMS fails to initialize due to internal error
  */
 public void init(Context ctx, String queueName) throws NamingException, JMSException {
  qconFactory = (QueueConnectionFactory) ctx.lookup(JMS_FACTORY);
  qcon = qconFactory.createQueueConnection();
  qsession = qcon.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
  queue = (Queue) ctx.lookup(queueName);
  qreceiver = qsession.createReceiver(queue);
  qreceiver.setMessageListener(this);
  qcon.start();
 }

 /**
  * Closes JMS objects.
  *
  * @exception JMSException
  *                if JMS fails to close objects due to internal error
  */
 public void close() throws JMSException {
  qreceiver.close();
  qsession.close();
  qcon.close();
 }

 /**
  * main() method.
  *
  * @param args
  *            WebLogic Server URL
  * @exception Exception
  *                if execution fails
  */

 public static void main(String[] args) throws Exception {

  InitialContext ic = getInitialContext();
  QueueReceive qr = new QueueReceive();
  qr.init(ic, QUEUE);

  System.out.println("JMS Ready To Receive Messages (To quit, send a \"quit\" message).");

  // Wait until a "quit" message has been received.
  synchronized (qr) {
   while (!qr.quit) {
    try {
     qr.wait();
    } catch (InterruptedException ie) {
     ie.printStackTrace();
    }
   }
  }
  qr.close();
 }

 private static InitialContext getInitialContext() throws NamingException {
  Hashtable env = new Hashtable();
  env.put(Context.INITIAL_CONTEXT_FACTORY, JNDI_FACTORY);
  env.put(Context.PROVIDER_URL, PROVIDER_URL);
  return new InitialContext(env);
 }

 public String getEncoding() throws Exception {
  return "Hello World!";
 }
}

 

 

原文链接:http://wangpx.iteye.com/blog/1040411

 

 

分享到:
评论

相关推荐

    Weblogic JMS 依赖jar包下载

    Weblogic JMS 依赖jar包是Oracle公司的中间件产品Weblogic Server中用于实现Java Message Service (JMS) 功能的关键组件。JMS是一种标准API,它允许应用程序在分布式环境中发送和接收消息,提供了异步通信的能力。在...

    Spring+Weblogic JMS

    WebLogic JMS是Oracle WebLogic Server提供的消息中间件,它遵循JMS规范,用于在分布式环境中传递消息,实现应用程序间的异步通信。WebLogic JMS提供了消息生产者、消费者、队列和主题等概念,确保消息的可靠传输。 ...

    java weblogic jms temple

    自己写好的一个简单的weblogic jms的简单实现,包括点对点的实现,以及topic的实现,适合初学者参考

    Programming WebLogic JMS

    ### 编程WebLogic JMS:深入理解与实践 #### 一、引言 随着企业级应用对消息处理的需求日益增长,Java消息服务(JMS)作为一种标准的消息中间件技术,已经成为开发分布式应用的重要组成部分。BEA WebLogic Server...

    WebLogic jms三个实例

    实现了jms的queue和topic,同时也实现了远程传送消息和本地传送消息,另外也分别实现了session的事务和非事务模式,有了这三个例子应该可以满足你的任何关于jms的需求了,由于上传限制,另外还需要下载有个WebLogic包...

Global site tag (gtag.js) - Google Analytics