首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | 镜像站
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
Linux资讯 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>编程开发>java>Java基础>正文

基础--websphere下JMS的配置和和应用

http://www.oklinux.cn  2008-01-24  来源: 赛迪网 liuping040190427  会员收藏  游客收藏  【 】 

1. MDB(Message Driven Bean)介绍
1.1. 相关概念
要真正理解MDB的话,需要理解java分布式编程的基础知识。下面我把它涉及到的知识点简单介绍下:
1.1.1. RMI(Remote Method Invocation):
RMI其实就是提供客户远程调用方法的技术,对一个具体提供服务的类它生成一个存根和一个骨架,RMI客户通过保存在本地的存根调用RMI服务器上的对象,而RMI服务器则通过本地的RMI骨架与客户机上的存根沟通,传递对象。


1.1.2. EJB(Enterprise JavaBean):
EJB的概念与RMI差不多。它存在于EJB容器中。EJB也是对象,因此它也有自身的一些方法,两种:回调方法,业务方法。业务方法是EJB面向客户提供服务的接口,它由客户调用。回调方法由容器调用,容器通过对这些方法的调用实现对EJB进行如创建,删除时的一些逻辑。要编写一个EJB要实现三个部分: EJB需要创建,所以要有一个创建它的工厂;EJB可以被远程调用所以还要有一个远程接口;一个具体实现的bean,它由回调方法和业务方法组成。


1.1.3. JMS(Java Message Service):
消息的传递分为点对点(PtoP)和发布/预定(即点对群)。它跟电子邮件一样都是异步通讯的,一个消息发送到队列里面,消息消费者则从队列中获取信息。

1.1.4. JNDI(Java Naming and Directory Interface):
Java命名和目录接口,可以用来查找远程对象。
1.2. MDB的环境以及所使用的工具
Windows XP,WebSphere5.1,Eclipse3.0,Ant1.6.2,IBMJDK1.4.2。
安装WebSphere时一定要确认安装了Messaging组件:


2. WebSphere JMS的相关配置
登陆WebSphere治理平台,选中:资源---àWebSphere JMS 提供者,并选择相应节点的server

选择好server后,在属性追加栏里点:
“WebSphere 队列连接工厂”配置QueueConnectionFactory。
“WebSphere 队列目的地”配置Queue。
2.1. 新建队列工厂
进入“WebSphere 队列连接工厂”页面后,新建一个队列工厂:

输入工厂名及对应的JNDI名:

点击确定按钮并保存。
2.2. 新建队列
进入“WebSphere队列”页面后,新建一个队列:


输入队列名及对应的JNDI名:

点击确定按钮并保存。
2.3. 新建监听器
下面配置队列监听器:
选择“应用程序服务器”,再选择相应server1

进入server1的页面后,在追加属性里面选择“消息侦听器服务”

然后还是在追加属性里面选择“侦听器端口”

然后新建一个监听端口:

输入端口名及监听的队列和工厂的JNDI名,初期状态就用默认的已启动,表示server刚启动时监听端口也同时启动:

点击确定并保存。
2.4. JMS server设置
回到应用程序服务器的server1页面,在追加属性中选择“服务器组件”:

然后选择JMS 服务器:

在队列名中输入前面新建的队列名:

点击确定并保存。
至此,WebSphere上的JMS配置全部完成。下面就是应用程序的例子。
3. ear包的作成
下面用一个J2EE应用程序示例来演示一下怎么创建和使用MDB的。

这个J2EE应用包含了一个普通EJB和一个MDB,以及一个部署文件application.xml。
EJB实现了向Queue里面发送信息的功能,而信息的接受则由MDB来自动实现,并通过onMessage()方法来实现在接受消息时需要执行的动作。

3.1. ejb-jar-rcv.jar(MDB)的作成:
MDB是被打成一个jar包的,这个jar包由实现了javax.ejb.MessageDrivenBean和javax.jms.MessageListener的一个类SimpleMessageBean.java和一个EJB规范要求的XML文件ejb-jar.xml组成。

SimpleMessageBean.java

ejbCreate(),ejbRemove()分别实现了MDB在容器里被创建和删除时要执行的动作。
getMessageDrivenContext()和setMessageDrivenContext(javax.ejb.MessageDrivenContext ctx)两个方法在这里没有使用到,就不说了。
最重要的就是onMessage(javax.jms.Message msg)方法,当这个jar包作为一个消息驱动bean被部署到WebSphere上后,它与一个指定的端口关联起来,这个端口上的监听器对我们前面在WebSphere上配置的Queue进行监听,每当有消息被送到这个Queue里就触发了onMessage方法,完成我们想要执行的动作,消息驱动由此而来。在这里onMessage方法是把收到的消息作成邮件然后发送到指定地址。

ejb-jar.xml

MDB也是一个EJB,所以这个文件也少不了:
test.receive.SimpleMessageBean,对应类文件的包和类名。

3.2. ejb-jar-snd.jar(EJB)的作成:
就像前面介绍一样,EJB里面包含了一个工厂MessageSenderHome.java,一个实现MessageSenderBean.java,一个远程接口MessageSender.java,还有一个XML说明文件ejb-jar.xml

MessageSender.java

这个类只有一个方法,它提供了一个远程接口。

MessageSenderBean.java这个类实现了SessionBean接口

这个类是EJB的具体实现类,要做的事就是把一条信息发送到指定队列里去。sendMessage()就是发送消息的这个方法,它通过EJB里的远程接口被调用。
connectionFactoryName和queueName分别对应前面定义的QueueConnectionFactory和Queue的JNDI名。
message是要发送的信息。
numMessages是发送的次数。

MessageSenderHome.java工厂类只有create()一个方法,要使用EJB发送信息则必须先调用这个工厂的这个方法创建一个MessageSender的实例,然后通过实例调用实现bean的sendMessage()方法,完成发送信息到Queue的功能。

ejb-jar.xml

这里的三个标签分别对应前面的工厂类,远程接口和实现类。
Stateless表示它是一个无状态会话bean。

3.3. TestJMS.ear(ear)的作成
把上述两个jar包打成一个ear文件则可以作为一个J2EE应用程序发布到WebSphere上去了,不过还需要下面这个J2EE应用的部署文件,application.xml:

这个文件说明了在这个J2EE应用中有两个EJB模块。

可以使用ant将上面的所有相关文件按照下面的目录结构打成一个ear包。

共2页: 上一页 1 [2] 下一页

上一篇:JSP/Servlet:< jsp-config>标签使用详解   下一篇:进阶-Java Web中的入侵检测及简单实现


收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·JSP/Servlet:< jsp-config>标签使用详解
·进阶-Java Web中的入侵检测及简单实现
·JAVA基础:JavaScript面向对象的支持
·浅谈MVC框架中View层的优雅设计及实例
·J2SE综合--为什么Java中继承是有害的
·关于角色访问控制(RBAC)
·Java怎样调用外部应用程序
·Java入门:java语言中创建和使用日期
·开发框架:关于struts 连接数据库的问题
·设计及设计模式:对于模式的“十大误解”
·Java语言深入:有关Java语言的内存泄漏
·接口与抽象类的深层理解
·初始化引发的"StackOverflowError" 异常
·Java 理论和实践:用软引用阻止内存泄漏
·一些JAVA相关的基础知识
·数据库:简单的类似ibatis的sqlmap工具
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·Java入门:状态对象--数据库的替代者
·Java语言怎样调用外部应用程序
·Java语言深入--关于Java语言的内存泄漏
·JSP/Servlet/JSF:Servlet/JSP配置详解
·进阶-怎样使用AJAX进行WEB应用程序开发
·基础:J2ME程序开发之新手入门九大要点
·Java入门--Java语言接口与继承的本质
·JAVA进阶--如何提升JSP应用程序的效率
·对Java中四种XML解析技术之不完全测试
·编写高级 JScript应用代码
·JSP/Servlet/JSF--对标签库的深入研究
·Java入门--关于字符串分割的两种方法
  阅读排行
·使用AJAX技术实现网页无闪自动局部刷新
·快速教您Apache Tomcat SSL的配置
·Java语言深入--java调用C/C 的过程
·用JSP JavaScript打造二级级联下拉菜单
·JAVA进阶--线程运行栈信息的获取讲解
·使用WEBWORK实现文件上传方法实例详解
·J2SE综合--JAVA实现把汉字转化成拼音
·一个非常有趣的使用spring框架AOP例子
·关于java中相对路径,绝对路径问题总结
·高级:lucene全文检索应用示例及代码简
·详细讲解Struts构架中action的跳转大全
·在Weblogic上配置JMS服务的方法
·Hibernate配置文件中的映射元素详解
·对Java中四种XML解析技术之不完全测试
·基于AJAX的动态树型结构的设计与实现
网摘收藏: