EJB 3.0 在WAS V7 上开发部署的最佳实践

日期: 2010-02-09 作者:王巍朱智青 来源:TechTarget中国 英文

  开发企业应用时难免需要和其他组件进行交互,下面将分节讨论EJB 3.0组件和其他一些组件的交互方式。

  将EJB发布为Web Service

  使用EJB客户端调用发布到应用服务器上的会话Bean往往具有一定的局限性(需要有容器上下文 -Context)。于是很多情况下我们希望将其发布为 Web Service 使其方便调用。

  自底向上生成Web Service:

  右键单击需要发布为Web Service的无状态会话Bean,选择“Web Services”— >“Create Web Services”,选择“Bottom up EJB Web Service”( 自底向上由 EJB 发布 Web Service) 以及 EJB 实现 Bean(SLBSampleBean),该实现Bean会自动被选择。 确认Web Service源工程以及 EAR 工程后,点击“Next”。

  接下来的配置中,我们需要关注称为“HTTP router”的配置项。当我们通过IBM导出工具将一个会话Bean发布为Web Service后,工具实际上会生成一个接受对该Web Service请求的代理类,运行中它将接收到的Web Service调用请求转化为对实际会话Bean的调用,并将调用结果以Web Servic响应的形式返回。由于这个代理是一个Servlet,因此必须将其置于一个Web应用程序中。IBM导出工具可以帮助我们生成这样一个Web应用程序并将代理 Servlet 置于其中,而“HTTP router”配置项的值就是该Web应用程序的工程名。

图 3. EJB 3.0 Web Service 的架构

图 1. EJB 3.0 Web Service 的架构

    使用消息驱动Bean连接Message Queue

  使用激活规范(Activation specifications)取代侦听器端口(Listener port):

  激活规范是一组消息属性的配置,通过这组配置可以将Websphere Application Server和企业信息系统(Enterprise Information System)通过JCA-Java™ EE连接器架构(Java™ EE Connector Architecture)1.5 规范连接集成起来。在 WebSphere Application Server V7 之前的版本(V6)中仅支持采用侦听器端口连接 Message Queue 与消息驱动 Bean,而从 Version 7 开始支持使用激活规范连接 Message Queue,并且侦听器端口已经不再推荐使用,因此在今后的开发中我们更多地使用激活规范来取代之前的侦听器端口。

  需要创建一个连接Message Queue的激活规范,在管理控制台左侧点击“Resources”“JMS”“Activation specifications”。右边的页面中我们能够看到所有JMS激活规范的列表。点击“New”按钮。在接下来的表单中,选择WebSphere MQ messaging provider,表示创建一个连接到MQ的激活规范。设置好目标队列的JNDI名和类型(Queue),目标队列是 MDB 的消息来源。

  选择“Enter all the required information into this wizard”来设置连接的细节。输入MQ服务器上的队列管理器名称。设置好连接细节,特别注意确保连接通道(Connection Channel)的配置正确,该值可以在MQ服务器上查看。

图 4. MQ激活规范的连接配置

图 2. MQ激活规范的连接配置

    以上的操作是在管理控制台中完成的,为了提高环境配置的自动化程度以便在实际项目中提高部署和测试的效率,我们也可以使用JACL脚本来完成以上配置(方便批量操作)。以下是一个使用JACL脚本的例子:

  清单 1. 创建激活规范的JACL脚本
    
 

以下是引用片段:
$AdminTask createWMQActivationSpec [$AdminConfig getid /Server:server1] 
 {-name “ActSpecSample” -jndiName “ActSpecSample” -destinationJndiName “QSample”
  -destinationType javax.jms.Queue -qmgrName QueueSample -qmgrHostname localhost
   -wmqTransportType CLIENT -qmgrPortNumber 1414 
   -qmgrSvrconnChannel SYSTEM.DEF.SVRCONN} 
 $AdminConfig save 

    如果希望了解更多关于JACL脚本语法及其他细节,请参考相关文档。

  建立消息驱动Bean和激活规范之间的绑定关系 :

  在创建好消息驱动Bean(MDB)和对应的激活规范后,还需要对二者进行绑定。可以通过绑定文件来实现MDB和MQ激活规范之间的绑定:该文件的文件名必须命名为ibm-ejb-jar-bnd.xml,并置于工程的META-INF目录下。

图 3. 手动创建MDB绑定文件
图 3. 手动创建MDB绑定文件
 

以下是绑定文件的一个例子,我们需要配置需要绑定的MDB的名称以及需要使用的MQ激活规范的JNDI名。

    清单 2. 绑定文件内容示例

以下是引用片段:
 <?xml version=”1.0″ encoding=”UTF-8″?> 
 <ejb-jar-bnd  
  
 xsi:schemaLocation=”http://websphere.ibm.com/xml/ns/javaee 
 http://websphere.ibm.com/xml/ns/javaee/ibm-ejb-jar-bnd_1_0.xsd” 
 version=”1.0″> 
 <message-driven name=”MDBSampleBean”> 
 <jca-adapter activation-spec-binding-name=”ActSpecSample” /> 
 </message-driven> 
 </ejb-jar-bnd> 

    请注意以上例子的<message-driven>标签,该标签完成了将MDBSampleBean与激活规范ActSpecSample绑定的功能。

    不过,我们也有另一种方法来取代使用绑定文件:可以在将EJB工程部署到WAS V7时,在管理控制台中进行配置绑定。如果对应的EJB工程中不包含绑定文件,在部署的过程中,我们可以看到多出的一个步骤(如下图Step 3)Bind listener for message-driven beans,在该步骤中,我们可以指定需要绑定的激活规范。

图 4. 部署过程中绑定激活规范

图 4. 部署过程中绑定激活规范

    类似配置绑定文件,在控制台中我们也需要设置要绑定的激活规范的JNDI名。

图 7. 激活规范的配置

图 5. 激活规范的配置

    完成部署步骤之后,我们创建的MDB就可以正常工作了(测试过程略)。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐

  • 专家全面解读WebService开发技术的奥秘

    SOA是当今企业软件架构的热点,而Web Service是SOA的一种较好的实现方式,但你对Web Service了解多少?

  • 何时是创建门户应用最佳时机

    在创建出新企业门户应用,链接到现有系统之前,你可能需要检查一下这些系统,确保这些系统本身不需要重造。这样你可能就会重新考虑是否要创建新企业门户应用了。

  • 2012年云计算厂商排行榜TOP 1之亚马逊

    连续三个年头了,亚马逊Web Service(AWS)都蝉联第一,不仅仅是凭借其实全球范围内的公有云计算主导者。在过去一年中,AWS已经针对企业级IT发布了多种类型的新服务……

  • 采用EJB开发的三个优势

    EJB是sun的服务器端组件模型,最大的用处是部署分布式应用程序。当然,还有许多方式可以实现分布式应用,类似微软的.net技术。