`
1028826685
  • 浏览: 938509 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类

J2EE中的JMS 消息服务

    博客分类:
  • J2EE
阅读更多
下面就java中的消息服务作如下学习总结:
java中的消息服务有两种分别是:Queen和Topic
步骤如下:无论是那种消息都需要先配置目标地址文件:message-service.xml
(*-service.xml)*表示你的命名后面必须一致
准备工作:
<1、导入*\jboss-4.2.3.GA-jdk6\jboss-4.2.3.GA\client
中的所有*.jar文件
<2、使用ANT来编译和发布EJB build.xml 内容如下:
<?xml version="1.0"?>

<!-- ======================================================================= -->
<!-- EJB3 HelloWorld build file                                                       -->
<!-- ======================================================================= -->

<project name="MessageDriverBean" default="ejbjar" basedir=".">

<property environment="env" />
<property name="app.dir" value="${basedir}" />
<property name="src.dir" value="${app.dir}\src" />
<property name="jboss.home" value="${env.JBOSS_HOME}" />
<property name="jboss.server.config" value="default" />
<property name="build.dir" value="${app.dir}\build" />
<property name="build.classes.dir" value="${build.dir}\classes" />

<!-- Build classpath -->
<path id="build.classpath">
<fileset dir="${jboss.home}\client">
<include name="*.jar" />
</fileset>
<pathelement location="${build.classes.dir}" />
</path>

<!-- =================================================================== -->
<!-- Prepares the build directory                                        -->
<!-- =================================================================== -->
<target name="prepare" depends="clean">
<mkdir dir="${build.dir}" />
<mkdir dir="${build.classes.dir}" />
</target>

<!-- =================================================================== -->
<!-- Compiles the source code                                            -->
<!-- =================================================================== -->
<target name="compile" depends="prepare" description="编绎">
<javac srcdir="${src.dir}" destdir="${build.classes.dir}" debug="on" deprecation="on" optimize="off" includes="com/**">
<classpath refid="build.classpath" />
</javac>
</target>

<target name="ejbjar" depends="compile" description="创建EJB发布包">
<jar jarfile="${app.dir}\HelloWorld.jar">
<fileset dir="${build.classes.dir}">
<include name="com/**/*.class" />
</fileset>
</jar>
</target>

<target name="deploy" depends="ejbjar">
<copy file="${app.dir}\HelloWorld.jar" todir="${jboss.home}\server\${jboss.server.config}\deploy" />
</target>

<!-- =================================================================== -->
<!-- Cleans up generated stuff                                           -->
<!-- =================================================================== -->
<target name="clean">
<delete dir="${build.dir}" />
<delete file="${jboss.home}\server\${jboss.server.config}\deploy\HelloWorld.jar" />
</target>

</project>



Queen:
第一步:配置message-service.xml文件内容如下:然后发布到Jboss中

<?xml version="1.0" encoding="UTF-8"?>
<server> 
  <mbean code="org.jboss.mq.server.jmx.Queue"
  name="jboss.mq.destination:service=Queue,name=liyong.com">
<attribute name="JNDIName">queue/liyong.com</attribute>  
    <depends optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends>
  </mbean>
第二步:编译和发布message-service.xml拷贝到*\jboss-4.2.3.GA-jdk6\jboss-4.2.3.GA\server\default\deploy
第三步:编写EJB Bean发送消息
public static void main(String[] args) {

try {
InitialContext initialContext=new InitialContext();
QueueConnectionFactory factory = (QueueConnectionFactory)initialContext.lookup("QueueConnectionFactory");
Connection con=factory.createConnection();
//第一个参数:是否建立事务
//第二个参数:表示消息确认模式
Session session=con.createSession(false,QueueSession.AUTO_ACKNOWLEDGE);
//查找目标地址
Destination destination = (Destination )initialContext.lookup("queue/liyong.com");
//创建发送消息
MessageProducer producer = session.createProducer(destination);
TextMessage msg = session.createTextMessage("您好,这是我的第一个消息驱动QueueBean");
producer.send(msg);
//关闭相应资源
producer.close();
session.close();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
第四步:编写接受端代码:采用消息驱动Bean (Message Driven Bean)接收消息
@MessageDriven(activationConfig =
{
  @ActivationConfigProperty(propertyName="destinationType",
    propertyValue="javax.jms.Queue"),
  @ActivationConfigProperty(propertyName="destination",
    propertyValue="queue/liyong.com"),
  @ActivationConfigProperty(propertyName="acknowledgeMode",
    propertyValue="Auto-acknowledge")
})
public class MessageDriverBeanQuee implements MessageListener{

//第一步:注册这个消息驱动监听位置
//第二步:接受消息
//第三步:发布到服务器
@Override
public void onMessage(Message message) {
TextMessage textMessage=(TextMessage)message;
try {
System.out.println(textMessage.getText());
} catch (JMSException e) {
e.printStackTrace();
}
}

}
第五步:发布EJB

Topic:

准备工作:如上

第一步:
配置目标地址文件
<?xml version="1.0" encoding="UTF-8"?>
<server> 
  <mbean code="org.jboss.mq.server.jmx.Queue"
  name="jboss.mq.destination:service=Queue,name=liyong.com">
<attribute name="JNDIName">queue/liyong.com</attribute>  
    <depends optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends>
  </mbean>
------------------------------------------------------------
   <mbean code="org.jboss.mq.server.jmx.Topic"
    name="jboss.mq.destination:service=Topic,name=liyong.com">
<attribute name="JNDIName">topic/liyong.com</attribute>  
    <depends optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends>
  </mbean>
</server>
第二步:编译和发布message-service.xml拷贝到*\jboss-4.2.3.GA-jdk6\jboss-4.2.3.GA\server\default\deploy
第三步:编写EJB Bean发送消息
public static void main(String[] args) {

try {
InitialContext initialContext=new InitialContext();
TopicConnectionFactory factory = (TopicConnectionFactory)initialContext.lookup("TopicConnectionFactory");
Connection con=factory.createConnection();
//第一个参数:是否建立事务
//第二个参数:表示消息确认模式
Session session=con.createSession(false,TopicSession.AUTO_ACKNOWLEDGE);
//查找目标地址
Destination destination = (Destination )initialContext.lookup("topic/liyong.com");
//创建发送消息
MessageProducer producer = session.createProducer(destination);
TextMessage msg = session.createTextMessage("您好,这是我的第一个消息驱动TopicBean");
producer.send(msg);
//关闭相应资源
producer.close();
session.close();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
第四步:编写接受端代码:采用消息驱动Bean (Message Driven Bean)接收消息

这里我编写了两个Topic来接受消息
<1、
@MessageDriven(activationConfig =
{
  @ActivationConfigProperty(propertyName="destinationType",
    propertyValue="javax.jms.Topic"),
  @ActivationConfigProperty(propertyName="destination",
    propertyValue="topic/liyong.com"),
  @ActivationConfigProperty(propertyName="acknowledgeMode",
    propertyValue="Auto-acknowledge")
})
public class MessageDriverBeanTopic1 implements MessageListener{

@Override
public void onMessage(Message message) {
TextMessage textMessage=(TextMessage)message;
try {
System.out.println("MessageDriverBeanTopic1="+textMessage.getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
<2、
@MessageDriven(activationConfig =
{
  @ActivationConfigProperty(propertyName="destinationType",
    propertyValue="javax.jms.Topic"),
  @ActivationConfigProperty(propertyName="destination",
    propertyValue="topic/liyong.com"),
  @ActivationConfigProperty(propertyName="acknowledgeMode",
    propertyValue="Auto-acknowledge")
})
public class MessageDriverBeanTopic2 implements MessageListener{

@Override
public void onMessage(Message message) {
TextMessage textMessage=(TextMessage)message;
try {
System.out.println("MessageDriverBeanTopic2="+textMessage.getText());
} catch (JMSException e) {
e.printStackTrace();
}
}

第五步:发布EJB

大功告成....

源码至下
分享到:
评论

相关推荐

    JMS.rar_J2EE JMS_jms

    在JMS中,消息通常通过消息代理(Message Broker)进行中转,它扮演了消息的存储和转发的角色。 JMS支持两种消息模式: 1. 点对点(Point-to-Point, PTP):在这种模式下,消息被发送到一个称为队列(Queue)的特定...

    The J2EE, JMS and JNI tutorials

    SUN官方的The J2EE, JMS and JNI tutorials

    JAVA的J2EE的JMS的API

    JAVA的J2EE的JMS的API,喜欢的就自己下载呗,呵呵,不好的的话也别喷我。。。呵呵

    J2EE的异步消息机制

    在JMS中,消息可以设置为持久化模式,确保即使在提供者出现问题时也能保留消息。同时,需要注意的是,Session、MessageProducer和MessageConsumer不支持并发,而ConnectionFactory、Destination和Connection则可以...

    J2EE中文全面简介

    在J2EE应用中,它用于查找和配置应用程序组件,如EJB、JMS队列等。 9. **Web Services** J2EE支持创建和消费Web服务,如SOAP和RESTful接口。这些服务可以通过WSDL(Web服务描述语言)进行定义,并通过UDDI(统一...

    J2ee API中文文档

    Java 2 Enterprise Edition (J2EE) 是一个用于构建企业级分布式应用程序的平台,它包含了多种API和服务,为开发人员提供了全面的框架。这个压缩包文件"J2EE API中文文档"显然是一份中文版的J2EE API参考手册,对于...

    j2ee应用技术-JMS

    JMS允许应用程序创建、发送、接收和读取消息,从而在分布式环境中实现解耦和可靠的数据传输。 JMS的核心概念包括以下几点: 1. **消息**:消息是数据的载体,包含了要传递的信息。JMS支持两种类型的消息:文本消息...

    JMS--J2EE培训材料

    3. **JMS提供者**:实现JMS协议的消息系统,如WebLogic Server提供的JMS服务。JMS提供者负责消息的存储、转发以及相关管理功能。 4. **管理对象**:这些是预定义的JMS对象,客户使用它们进行消息的发送和接收。 ###...

    J2EE5/WS/JMS规范中文文档

    《J2EE5/WS/JMS规范中文文档》是一份重要的技术资料,它涵盖了Java企业版(J2EE)5版本、Web服务以及Java消息服务(JMS)的相关规范,对于理解和开发基于Java的分布式应用系统具有极大的价值。这篇文档详细解读了...

    JMS消息模型 JMS学习.doc

    6. **JMS in Application Servers**:JMS通常集成在J2EE(Java 2 Enterprise Edition)应用服务器中,作为其组件服务的一部分,提供消息服务的便捷接入和管理。 使用JMS的优势在于: - **异步处理**:JMS允许应用...

    最全,最新,j2ee中文api

    4. **JMS**:为异步消息传递提供了标准API,支持点对点和发布/订阅模型。 5. **JTA(Java Transaction API)**:处理跨多个资源的事务管理。 6. **JNDI(Java Naming and Directory Interface)**:提供命名和目录...

    J2EE中文API文档简洁版

    J2EE(Java 2 Platform, Enterprise Edition)是Oracle公司推出的用于构建企业级分布式应用程序的框架,它提供了丰富的服务和组件模型,包括Servlet、JSP、EJB(Enterprise JavaBeans)、JMS(Java Message Service...

    j2ee实例 j2ee实例j2ee实例

    J2EE(Java 2 Platform, Enterprise Edition)是Oracle公司推出的用于构建企业级分布式应用程序的框架,它提供了服务器端的编程模型和运行环境,支持多种服务,如事务处理、安全、集群、数据库连接等。本实例集合将...

    J2EE_1.5_API中文帮助文档.chm(完全可用)

    4. **JMS(Java Message Service)**:JMS是Java平台的消息中间件API,1.1版本在J2EE 1.5中,用于实现异步通信和解耦应用程序。通过消息队列,不同组件可以在不受时间限制的情况下交互数据。 5. **JTA(Java ...

    J2EE API(J2EE中文帮助文档/J2EE中文版指南/JavaEE_CN)

    不论是Web应用的开发,还是后台服务的实现,J2EE API都提供了强大的工具和框架,使得开发者能够在复杂的企业环境中高效地工作。因此,对于有意从事Java企业级应用开发的人来说,熟悉和精通J2EE API是至关重要的。

    J2EE中文API.CHM.7z

    4. JMS:Java消息服务允许在分布式环境中进行异步通信。开发者可以通过文档学习如何创建消息代理、发布/订阅模型和点对点模型,以及如何使用消息驱动的Bean。 5. JTA:JTA定义了Java应用程序进行分布式事务处理的...

    J2EE1.5 api文档

    在J2EE 1.5中,JMS 1.1规范定义了多种消息模式,如点对点、发布/订阅,用于实现异步通信和解耦。 6. **JTA(Java Transaction API)**: JTA提供了分布式事务处理的能力,确保在多资源环境下的数据一致性。J2EE ...

    软件体系架构模式在J2EE中的应用

    4. 服务定位器模式:在J2EE中,服务定位器模式用于查找和管理服务。例如,JNDI(Java Naming and Directory Interface)就是一个服务定位器,它允许应用查找和绑定到资源,如数据库连接池或邮件服务器。 5. 桥接...

Global site tag (gtag.js) - Google Analytics