`
longgangbai
  • 浏览: 7258501 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

在JMS 中使用JNDI

阅读更多

   在META-INF中配置如下:

   Context.xml文件內容:

<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Resource name="jms/ConnectionFactory" auth="Container"
 type="org.apache.activemq.ActiveMQConnectionFactory"
 factory="org.apache.activemq.jndi.JNDIReferenceFactory"
 brokerURL="vm://localhost"
 brokerName="localhost"
 useEmbeddedBroker="false"
 />
<Resource name="jms/Queue"
    auth="Container"
 type="org.apache.activemq.command.ActiveMQQueue"
 factory="org.apache.activemq.jndi.JNDIReferenceFactory"
    physicalName="MY.TEST.FOO"
 />
<Resource name="jms/Topic" auth="Container"
 type="org.apache.activemq.command.ActiveMQTopic"
 factory="org.apache.activemq.jndi.JNDIReferenceFactory"
    physicalName="MY.TEST.FOO.QUEUE"
 />
</Context>

 

JMS实现类:

package cn.com.vnvtrip.flex.message;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;

import javax.jms.JMSException;
import javax.jms.ObjectMessage;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.TopicConnection;
import javax.jms.TopicPublisher;
import javax.jms.TopicSession;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.command.ActiveMQTopic;

/**
 *
 * @author longgangbai
 *
 */
public class FlexMessageSender implements Runnable {

 private Context envCtx = null;

 private ActiveMQConnectionFactory connectionFactory;

 private TopicConnection connection;

 private TopicSession session;

 private ActiveMQTopic destination;

 private TopicPublisher publisher;

 private Random random = new Random();

 private int i = 0;

 private void initializer() {
  Context initCtx = null;
  try {
   initCtx = new InitialContext();
   connectionFactory = (ActiveMQConnectionFactory) initCtx
     .lookup("java:comp/env/jms/ConnectionFactory");
   System.out.println("connectionFactory =" + connectionFactory);
   destination = (ActiveMQTopic) initCtx
     .lookup("java:comp/env/jms/Topic");
   System.out.println("destination =" + destination);
   connection = connectionFactory.createTopicConnection();

   session = connection.createTopicSession(false,
     Session.AUTO_ACKNOWLEDGE);
   publisher = session.createPublisher(destination);
   connection.start();
  } catch (NamingException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (JMSException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }

 public void send() {
  try {
   TextMessage message = session.createTextMessage();
   String value = String.valueOf(random.nextInt(100));
   message.setText(value);
   publisher.publish(message);
   System.out.println("send " + value + " ok.");
  } catch (JMSException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }

 public void sendObj() {
  try {
   SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm:ss");
   String time = simpleDateFormat.format(new Date());
   String index = String.valueOf(i++);
   String x = String.valueOf(random.nextInt(100));
   OrderVO bean = new OrderVO();
   bean.setId(index);
   bean.setName(time);
   bean.setValue(x);
   ObjectMessage objectMessage = session.createObjectMessage();
   objectMessage.setObject(bean);
   publisher.send(objectMessage);
   System.out.println("send obj x=" + x + "-------------" + time);
  } catch (JMSException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }

 /*
  * (non-Javadoc)
  *
  * @see java.lang.Runnable#run()
  */
 public void run() {
  try {
   initializer();
   connection.start();
   send();
   while (true) {
    sendObj();
    // int qq = random.nextInt(10);
    Thread.sleep(1000);
   }
  } catch (JMSException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (InterruptedException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (Exception e) {
   e.printStackTrace();
  }

 }

}
web.xml配置:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
 xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>jmsServlet</servlet-name>
    <servlet-class>cn.com.vnvtrip.flex.message.JMSMessageServlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>jmsServlet</servlet-name>
    <url-pattern>/jmsServlet</url-pattern>
  </servlet-mapping>
 
  <description>
   
  </description>
   <resource-ref>
      <description>topic/MyTopic</description>
      <res-ref-name>jms/topic/MyTopic</res-ref-name>
      <res-type>org.apache.activemq.command.ActiveMQTopic</res-type>
      <res-auth>Container</res-auth>
   </resource-ref>
  
     <description>
   
  </description>
   <resource-ref>
      <description>ConnectionFactory</description>
      <res-ref-name>jms/ConnectionFactory</res-ref-name>
      <res-type>org.apache.activemq.ActiveMQConnectionFactory</res-type>
      <res-auth>Container</res-auth>
   </resource-ref>
  
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

 

使用一個Servlet测试JMS

 

package cn.com.vnvtrip.flex.message;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class JMSMessageServlet extends HttpServlet {

 /**
  * Constructor of the object.
  */
 public JMSMessageServlet() {
  super();
 }

 /**
  * Destruction of the servlet. <br>
  */
 public void destroy() {
  super.destroy(); // Just puts "destroy" string in log
  // Put your code here
 }
   /**
    * 测试JMS
    */
 public void service(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {

  response.setContentType("text/html");
  PrintWriter out = response.getWriter();
  FlexMessageSender meesagesender = new FlexMessageSender();
  Thread thread = new Thread(meesagesender);
  thread.start();
  out.println("flex message Thread ....");
  out.flush();
  out.close();
 }

 /**
  * Initialization of the servlet. <br>
  *
  * @throws ServletException
  *             if an error occurs
  */
 public void init() throws ServletException {
  // Put your code here
 }

}

分享到:
评论

相关推荐

    在JBOSS 环境中配置JMS,在程序中可以通过JNDI 获取连接

    在JBOSS 环境中配置JMS,在程序中可以通过JNDI 获取连接,如消息启动Bean 就可以通过JNDI获取:@MessageDriven(activationConfig = { @ActivationConfigProperty(propertyName = "destinationType", propertyValue ...

    Spring JMS消息处理-不基于JNDI

    NULL 博文链接:https://bijian1013.iteye.com/blog/2304181

    Spring JMS 消息处理-基于JNDI

    NULL 博文链接:https://bijian1013.iteye.com/blog/2304111

    JNDI,JTA和JMS简介

    主要介绍了JNDI,JTA和JMS的相关内容,包括中文释义,概念解释等,需要的朋友可以了解下。

    rmi-jndi-ldap-jrmp-jmx-jms:rmi,jndi,ldap,jrmp,jmx,jms一些演示测试

    rmi-jndi-ldap-jrmp-jmx-jms rmi,jndi,ldap,jrmp,jmx,jms一些演示测试

    weblogic jms

    private static String JMS_FACTORY = "JNDI_JMS_Connection_Factory"; private static String QUEUE = null; private QueueConnectionFactory qconFactory; private QueueConnection qcon; private ...

    String+tomcat+jms实例

    在tomcat 下的context.xml文件中加入 auth="Container" type="org.apache.activemq.ActiveMQConnectionFactory" description="JMS Connection Factory" factory="org.apache.activemq.jndi....

    Java术语详解(JMS、RPC、Ajax、SOAP、WSDL、JPA、ORM、mvc和JNDI)

    里面包含了:JMS、RPC、Ajax、SOAP、WSDL、JPA、ORM、mvc和JNDI九个术语的详解。认真读完本文,将显著提高你对JavaEE的认识。

    JMS 实战 示例

    JMS 在系统中的应用,可以修改后应用于系统中。

    sprin jms activemq 测试

    sprin jms activemq 测试 两个 一个是jndi 一个是activemq

    Spring+JMS+ActiveMQ+Tomcat DOME

    在Tomcat的conf/context.xml中的元素里面加上如下配置: auth="Container" type="org.apache.activemq.ActiveMQConnectionFactory" description="JMS Connection Factory" factory="org.apache.activemq....

    IBM websphereMQ 6.0 lib

    was6.0的lib,文件列表为: CL3Export.jar CL3Nonexport.jar ...com.ibm.mq.jms.Nojndi.jar ...commonservices.jar connector.jar ...jms.jar jndi.jar jta.jar ldap.jar postcard.jar providerutil.jar rmm.jar

    JMS_Glassfish-3-Server:在 Glassfish 3 服务器中实现 JMS

    JMS_Glassfish-3-Server 在 Glassfish 3 服务器中实现 JMS管理系统: 它是一个用于创建、读取和发送消息的 API。 它是一个消息服务提供者,用于从一个应用程序向另一个应用程序发送和接收消息。 通常,用户向应用...

    使用SpringJMS轻松实现异步消息传递

    传统的使用JMSAPI进行消息传递的实现包括多个步骤,例如JNDI查询队列连接工厂和Queue资源,在实际发送和接收消息前创建一个JMS会话。Spring框架则简化了使用JEE组件(包括JMS)的任务。它提供的模板机制隐藏了典型的...

    如何让J2EE程序脱离容器

    J2EE组件使用JNDI相互查找和查找所需要的资源,如JDBC和JMS连接。JMS这样的技术鼓励松散耦合,允许灵活地为工作流程建模、容易分配处理任务、可伸缩性和容错性。很多J2SE服务器应用程序也可以从这些技术和原理中受益...

Global site tag (gtag.js) - Google Analytics