JBoss IDE 开发EJB3.0 Message Driven Bean
2007-10-27 14:59
337 查看
一. 准备开发环境
JBoss IDE 1.5GA, JBoss IDE是JBoss公司对Eclipse的增强,包括EJB3.0,JBPM,JBoss AOP,FreeMaker等等插件,对于JBoss产品的开发,是非常方便的。可以去Jboss.org网站下载.Ecliose WTP插件,这是开发Java EE项目插件,这里用来开发一个web项目,来测试Message Driven Bean.
JBoss 4.04GA,可以从Jboss.org网站下载,安装版,zip版都可以.
二. 新建EJB3.0工程
选择菜单New | Project...,在弹出对话框中,选择EJB 3.0 Project单击[Next]按钮,填写工程名称EJB3Demo2
单击[Next]按钮,选择JBoss配置
我们这里还没有配置,因此选择[create a jboss configuration]按钮,新建JBoss配置.
选择JBoss4.0.x,并单击[New]按钮
按下图 输入配置名称,JBoss 安装目录,Server Configuration选择default
单击[Apply]按钮,然后单击[Close]按钮
单击[Finish]按钮,完成.
三.新建Message Driven Bean
单击右键,选择New | Other...在弹出对话框中,选择EJB3.0 | Message Driven Bean
单击[Next]按钮,输入包名,类名等
单击[Finish]按钮完成.
四. 完成Message Driven Bean的代码
4.1 设置ConnectionFactory和Queue
ConnectionFacoty使用JBoss默认的ConnectionFactory,因此不用设置。设置Queue方式如下:
找到jbossmq-destinations-service.xml文件,该文件在jboss安装目录/server/default/deploy/jms下.在文件最后,加入下面代码,新增一个Queue.
<mbean code="org.jboss.mq.server.jmx.Queue"
name="jboss.mq.destination:service=Queue,name=myQueue">
<depends optional-attribute-name="DestinationManager">
jboss.mq:service=DestinationManager
</depends>
</mbean>
4.2 完成代码
设置好Queue后,编辑HelloMDB.java,加入Connection和Queue说明.package demo;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
@MessageDriven(activationConfig = {
@ActivationConfigProperty(propertyName = "destinationType",
propertyValue = "javax.jms.Queue"),
@ActivationConfigProperty(propertyName = "destination",
propertyValue = "queue/myQueue") })
public class HelloMDB implements MessageListener {
public void onMessage(Message msg) {
if (msg instanceof TextMessage) {
TextMessage txtMsg = (TextMessage) msg;
try {
System.out.println("Hello " + txtMsg.getText() + ",MDB欢迎您!");
} catch (JMSException e) {
e.printStackTrace();
}
}
}
}
4.3导出jar包
选择菜单File | Export,弹出对话框选择JAR File单击[Next]按钮.选择jar包导出的位置
单击[Finish]按钮,完成导出
五. MDB的部署与测试
5.1 部署EJB
把我们刚才导出的jar文件.放到JBoss安装目录下的server/default/deploy下ok,ejb部署好了.下面我们写一个servlet测试一下
5.2 测试EJB
5.2.1新建动态web项目
选择菜单 File | new | Project ,在弹出对话框中选择web|Dynamic Web Project单击[Next]按钮,填写工程名称
单击{Finish]按钮,完成.
5.2.2 新建Servlet
单击右键.选择New | Servlet弹出对话框中,按下图填写
单击[Finish]按钮完成
5.2.3 在TestServlet的doGet方法中,编写测试EJB的代码
TestServlet.java内容如下package test;
import java.io.IOException;
import javax.jms.JMSException;
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.TextMessage;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class TestServlet extends javax.servlet.http.HttpServlet implements
javax.servlet.Servlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
try {
//得到上下文
Context ctx=new InitialContext();
//得到ConnectionFacory
QueueConnectionFactory connFacotry=
(QueueConnectionFactory)ctx.lookup("ConnectionFactory");
//得到消息队列
Queue queue=(Queue)ctx.lookup("queue/testQueue");
QueueConnection queueConn=connFacotry.createQueueConnection();
QueueSession queueSession =
queueConn.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
QueueSender queueSender =queueSession.createSender(queue);
//组装消息
TextMessage txtMsg=queueSession.createTextMessage();
txtMsg.setText("Luo Daijun");
queueSender.send(txtMsg);
//关闭资源
queueSender.close();
queueSession.close();
queueConn.close();
} catch (NamingException e) {
e.printStackTrace();
} catch (JMSException e) {
e.printStackTrace();
}
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
}
}
5.2.4 运行TestServlet,测试效果 ^_^
右键, 选择 Run As | Run on server选择JBoss 4.0 for EJB3.0
单击[Finish]按钮,完成
打开IE浏览器,输入 http://localhost:8080/TestEJB/TestServlet
嗯..看看JBuilder 的控制台吧
嗯.结束
相关文章推荐
- EJB3.0中的MessageDrivenBean
- EJB3.0 消息驱动:MDB(Message Driven Bean)
- Eclipse3.2.1中开发EJB 2.x的Message Driven Bean(MDB)
- Eclipse3.2.1中开发EJB 3.0的Message Driven Bean(MDB)
- EJB3.0中的MessageDrivenBean
- EJB3.0开发指南:实体Bean
- myeclipse+jboss开发EJB3.0之实体Bean
- SessionBean与MessageDrivenBean
- EJB3.0开发指南:实体Bean的继承:单一表策略
- 【进阶EJB】深入探讨三种Bean(三)——MessageDriven Bean
- EJB3.0开发有状态会话Bean问题
- EJB3.0开发指南:无状态会话Bean
- EJB3.0开发指南:使用实体Bean
- EJB3.0开发指南:实体Bean的继承:单一表策略
- ejb3.0学习之一:无状态会话bean开发
- EJB3.0开发一个远程接口无状态会话bean
- EJB3.0开发指南:无状态会话Bean
- EJB3.0开发指南:无状态会话Bean
- EJB3.0开发指南:消息驱动Bean
- ejb glassfish messageDrivenBean