从消息队列中接收消息,无疑我们会使用MDB(Message Driven Bean)。
在刚刚发送消息的工程下,我们写MDB接收程序 TestMessageDrivenBean。
package com.test.jms;
import javax.annotation.Resource;
import javax.ejb.MessageDriven;
import javax.ejb.MessageDrivenContext;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
@MessageDriven(mappedName = "jms/myQueue")
public class TestMessageDrivenBean implements MessageListener
{
@Resource
private MessageDrivenContext mdc;
public TestMessageDrivenBean()
{}
public void onMessage(Message inMessage)
{
TextMessage msg = null;
try {
if (inMessage instanceof TextMessage) {
msg = (TextMessage) inMessage;
System.out.println("\n\n**** MESSAGE BEAN: Message received: " +
msg.getText());
} else {
System.out.println("Message of wrong type: " +
inMessage.getClass().getName());
}
} catch (JMSException e) {
e.printStackTrace();
mdc.setRollbackOnly();
} catch (Throwable te) {
te.printStackTrace();
}
}
}
配置文件需要两个,ejb-jar.xml和sun-ejb-jar.xml
ejb-jar.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ejb-jar PUBLIC '-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans
2.0//EN' 'http://java.sun.com/dtd/ejb-jar_2_0.dtd'>
<ejb-jar>
<enterprise-beans>
<message-driven>
<ejb-name>MessageBean</ejb-name>
<ejb-class>com.test.jms.TestMessageDrivenBean</ejb-class>
<transaction-type>Container</transaction-type>
<message-driven-destination>
<destination-type>javax.jms.Queue</destination-type>
</message-driven-destination>
<resource-ref>
<res-ref-name>jms/myCF</res-ref-name>
<res-type>javax.jms.ConnectionFactory</res-type>
<res-auth>Container</res-auth>
</resource-ref>
<resource-ref>
<res-ref-name>jms/myQueue</res-ref-name>
<res-type>javax.jms.Queue</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</message-driven>
</enterprise-beans>
<assembly-descriptor>
<container-transaction>
<method>
<ejb-name>MessageBean</ejb-name>
<method-intf>Bean</method-intf>
<method-name>onMessage</method-name>
<method-params>
<method-param>javax.jms.Message</method-param>
</method-params>
</method>
<trans-attribute>NotSupported</trans-attribute>
</container-transaction>
</assembly-descriptor>
</ejb-jar>
sun-ejb-jar.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sun-ejb-jar PUBLIC '-//Sun Microsystems, Inc.//DTD Application
Server 8.1 EJB 2.1//EN'
'http://www.sun.com/software/appserver/dtds/sun-ejb-jar_2_1-1.dtd'>
<sun-ejb-jar>
<enterprise-beans>
<ejb>
<ejb-name>MessageBean</ejb-name>
<jndi-name>jms/myQueue</jndi-name>
<resource-ref>
<res-ref-name>jms/myCF</res-ref-name>
<jndi-name>jms/myCF</jndi-name>
<default-resource-principal>
<name>guest</name>
<password>guest</password>
</default-resource-principal>
</resource-ref>
<mdb-connection-factory>
<jndi-name>jms/myCF</jndi-name>
<default-resource-principal>
<name>guest</name>
<password>guest</password>
</default-resource-principal>
</mdb-connection-factory>
</ejb>
</enterprise-beans>
</sun-ejb-jar>
一切准备工作完成,打包。
将上述两个xml配置文件放到META-INF目录下,目录结构为:
TestJMS_fat.jar
META-INF
ejb-jar.xml
sun-ejb-jar.xml
MANIFEST.MF
com
test
jms
TestSendMessage.class
TestMessageDrivenBean.class
打包好后,将TestJMS_fat.jar扔到 %Glassfish_HOME%/domains/domain1/autodeploy下即可。
这样一个完整的收发JMS消息的程序便算大功告成。
如果我们的mdb打包是一个web工程,在控制台会报错,不用管它,不会影响我们对mdb的使用。
大家可以参考: http://www.jroller.com/vprise/entry/trying_glassfish_again
这篇文章就是说的如果我们的mdb是打包的web工程,将会出现的错误。
分享到:
相关推荐
标题《Glassfish集群搭建手册》指的是利用Oracle提供的Glassfish应用服务器软件进行集群配置的详细指南。此手册涵盖了在不同场景下通过图形化界面和命令行方式搭建集群的整个过程,并且描述了如何配置集群环境以支持...
GlassFish 安装配置文档 GlassFish 是一个基于 Java 的开源应用服务器,提供了一个强大且灵活的平台来部署和管理基于 Java 的应用程序。本文档将指导 readers 通过安装和配置 GlassFish 服务器,并将其与 Eclipse ...
GlassFish4的下载和安装的详细步骤,下载地址,配置等。附带有GlassFish3的安装简述
在Java EE或JSF应用开发中,**NetBeans** 和 **Glassfish** 的组合是最优选择之一。NetBeans提供了对Glassfish的优秀支持,使得开发者能够轻松地开发、调试和部署应用。 - **NetBeans**: 它是一个免费且开源的集成...
1. **Java EE 7支持**:GlassFish 4.0是首款完全支持Java EE 7规范的应用服务器,包括Web Profile和Full Profile。Java EE 7引入了多项新特性,如WebSocket、JAX-RS 2.0(用于RESTful服务)、JPA 2.1(Java ...
### Glassfish安装与启动详解 #### 一、简介 GlassFish 是一款开源的应用服务器,它遵循Java EE标准,被广泛应用于开发、测试和生产环境中。本文档将详细介绍如何安装和启动GlassFish应用服务器。 #### 二、安装前...
在Linux环境下,Glassfish服务器的自动化启动是系统管理员和开发者常用的需求,这有助于提升服务器管理效率,确保服务的持续性和稳定性。Glassfish是Oracle公司提供的一个开源Java EE应用服务器,它支持各种Web应用...
【GlassFish 5.0 安装与配置详解】 GlassFish,由Oracle公司主导的开源项目,是一款功能强大的Web服务器和应用服务器,以其卓越的性能和丰富的特性在开发者社区中备受推崇。相比于Tomcat,GlassFish提供了更全面的...
GlassFish网络开发服务器是一款强大的开放源代码应用服务器,主要用于运行Java EE(Java Platform, Enterprise Edition)应用程序。由Oracle公司维护,它支持各种企业级服务,包括Web服务、EJB(Enterprise ...
《深入解析Glassfish 3.1.2.2与Java EE 6的融合应用》 Glassfish 3.1.2.2是一款由Oracle公司开发的开源应用服务器,它是Java EE 6规范的重要实现者,提供了全面的支持和丰富的功能,为开发者提供了构建企业级Web...
在IT行业中,Glassfish是一款开源的应用服务器,由Sun Microsystems开发并维护,后来成为Oracle Corporation的一部分。Glassfish支持Java EE(现在称为Jakarta EE)规范,为开发者提供了构建企业级Web应用的平台。当...
【GlassFish 2.0 安装详解】 GlassFish 2.0 是 Sun Microsystems 推出的一款免费且开源的 Java EE 服务器,它基于 Java Platform, Enterprise Edition (Java EE) 5规范,提供了包括EJB 3.0、JSF 1.2、Servlet 2.5、...
### Glassfish与Tomcat对比分析 #### 执行摘要 对于Web 2.0初创公司、应用服务提供商以及提供动态Web应用的独立软件供应商(ISVs)而言,应用即业务,而应用服务器中的Web容器技术能够直接影响业务成果。Web容器是...
《GlassFish Eclipse Plugin:集成开发环境的强大力量》 GlassFish Eclipse Plugin是专为Eclipse IDE设计的一款插件,旨在提升开发人员在Eclipse环境中对GlassFish应用服务器的管理和开发效率。GlassFish,作为...
《Glassfish安装手册及源文件详解》 Glassfish是一款开源的应用服务器,它是Java EE平台的实现,为企业级应用提供了一套完整的开发、部署环境。在本文中,我们将深入探讨如何安装Glassfish,以及如何利用Ant工具...
《Glassfish安装详解》 Glassfish,作为Oracle公司开源的一款Java EE应用服务器,是开发者进行企业级Java应用程序部署的重要平台。本文将详细讲解如何安装和配置Glassfish,以帮助初学者快速入门。 首先,理解...
### Glassfish安装步骤详解 #### 一、简介 Glassfish是一款开源的应用服务器,它支持Java EE标准,并且在企业级应用开发中具有广泛的应用。为了能够成功安装并配置Glassfish,确保系统环境中已经安装了合适的JDK...
GlassFish 是一款强健的商业兼容应用服务器,达到产品级质量,可免费用于开发、部署和重新分发。开发者可以免费获得源代码,还可以对代码进行更改。 GlassFish 是用于构建 Java EE 5应用服务器的开源开发项目的名称...
《深入解析Glassfish-v2源码》 Glassfish-v2是一款基于Java EE 5标准的开源应用服务器,其源码的公开为开发者提供了深入了解和学习Java企业级开发的宝贵资源。在本文中,我们将深入探讨Glassfish-v2的核心概念、...
这份“glassfish官方文档”包含了关于GlassFish服务器的管理和开发两个主要方面,分别由“glassfish-admin.pdf”和“glassfish-develop.pdf”两份文档详细阐述。 在“glassfish-admin.pdf”中,我们可以预期学习到...