转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> JAVA开发 >> 正文
EJB 3.0开发指南之消息驱动Bean         ★★★★

EJB 3.0开发指南之消息驱动Bean

作者:闵涛 文章来源:闵涛的学习笔记 点击数:551 更新时间:2009/4/22 23:28:56
  消息驱动Bean的业务接口已经被定义,对于使用JMS来说那就是MessageListener接口,这个接口定义了OnMessage方法。

  实现类必须使用MessageDriven注释。可以实现也可以不实现setMessageDrivenContext和ejbRemove方法。

  在JBOSS中,通过ConnectionConfig指定消息的队列的JNDI名称。


  在Eclipse中导入本文提供的例子Messager。

  这个例子从客户端发送一个TextMessage,这个Bean组件接收到这个消息后,将把这个消息输出到控制台上。

  这个例子主要有5个文件:

   Messager.java:业务组件。
  
   Client.java:测试EJB的客户端类。
 
   jndi.properties:jndi属性文件,提供访问jdni的基本配置属性。

   Build.xml:ant 配置文件,用以编译、发布、测试、清除EJB。

   queue-example-service.xml:消息服务,用来测试消息。

  下面针对每个文件的内容做一个介绍。

Messager.java

package com.kuaff.ejb3.messager;

import org.jboss.ejb3.mdb.ConnectionConfig;
import javax.ejb.MessageDriven;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.TextMessage;
import javax.jms.MessageListener;

@MessageDriven
@ConnectionConfig(destinationType = javax.jms.Queue.class, destinationJndiName = "queue/kuaffejb3/sample", durable = true, subscriptionId = "kuaffMessage")

public class Messager implements MessageListener
{
 public void onMessage(Message recvMsg)
 {
  System.out.println("接收到的消息:");
  try
  {
   TextMessage message = (TextMessage)recvMsg;
   System.out.println(message.getText());
  }
  catch (JMSException e)
  {
   e.printStackTrace();
  }
 }
}
  这个消息Bean很简单,接收到消息后不做什么处理,就是将消息内容输出到控制台上,

Client.java

package com.kuaff.ejb3.messager;

import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueSender;
import javax.jms.QueueSession;
import javax.jms.TextMessage;
import javax.naming.InitialContext;

public class Client
{
 public static void main(String[] args) throws Exception
 {
  QueueConnection cnn = null;
  QueueSender sender = null;
  QueueSession session = null;
  InitialContext ctx = new InitialContext();
  Queue queue = (Queue) ctx.lookup("queue/kuaffejb3/sample");
  QueueConnectionFactory factory = (QueueConnectionFactory) ctx.lookup("ConnectionFactory");
  cnn = factory.createQueueConnection();
  session = cnn.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE);
  TextMessage msg = session.createTextMessage("江湖快报:玉树临风风流倜傥的公子小巢又出现了。");
  sender = session.createSender(queue);
  sender.send(msg);
  System.out.println("消息已经发出");
 }
}
  这个客户端将发送一个文本消息到队列中。

queue-example-service.xml
<?xml version="1.0" encoding="UTF-8"?>
<server>
<mbean code="org.jboss.mq.server.jmx.Queue" name="jboss.mq.destination:service=Queue,name=kuaffMessage">
 <attribute name="JNDIName">queue/kuaffejb3/sample</attribute>
 <depends optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends>
</mbean>
</server>
  配置这个程序所需的消息服务。

  请运行{$JBOSS_HOME}/bin目录下的run.bat: run ?call,启动JBOSS。

  在Eclipse的Ant视图中执行ejbjar target。或者在命令行下,进入到此工程目录下,执行ant ejbjar,将编译打包发布此EJB。

  在Eclipse的Ant视图中执行run target。或者在命令行下,进入到此工程目录下,执行ant run,测试这个EJB。


[网页制作]JavaBean与EJB有何不同之处  [网页制作][J2EE] 实战开发EJB
[Web开发]EJB 客户端程序_  [Web开发]EJB Interface
[JAVA开发]前进:从EJB 2.1到EJB 3.0  [JAVA开发]EJB 3.0是Hibernate的克隆吗?
[JAVA开发]利用EJB 3.0的JPA设计企业应用程序  [JAVA开发]EJB 3.0+Beehive开发客户反馈系统_软件_EJB3.0
[JAVA开发]EJB 3.0+Aspect实现声明性编程初步  [JAVA开发]EJB 3.0 开发指南之实体Bean
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台