服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

使用消息驱动beans(3)


  第四部:为mdb(messagedrivebeans)定义部署描述符(ejb-jar.xml)
  在部署的时候,我们要告诉容器(这里使用的是weblogic)有关mdb的信息。使用标注的ejb部署描述符来安装mdbs.因此,我们需要创建一个名为meta-inf的文件夹来放置这些部署文件。
  
  meta-inf/ejb-jar.xml
  在ejb-jar文件中,我们描述mdb类的名称,bean类的地址类型,和安全信息等。下面是这个文件;注意类名称和jms地址类型(标记的内容根据中描述的特定的创建者而改变。如果你使用的是bea weblogic6.0sp1你需要使用到描述)
  
  <ejb-jar>
   <enterprise-beans>
   <message-driven>
    <ejb-name>emailmdb</ejb-name>
    <ejb-class>com.customware.ejb.emailmdb</ejb-class>
    <transaction-type>container</transaction-type>
    <message-driven-destination>
    <destination-type>javax.jms.queue</destination-type>
    </message-driven-destination>
    <security-identity>
    <run-as-specified-identity>
     <role-name>system</role-name>
    </run-as-specified-identity>
    </security-identity>
   </message-driven>
   </enterprise-beans>
  </ejb-jar>
  
  我们在那里告诉容器队列的名称呢?这要放到厂商特定的文件中。比如,如果你部署在bea weblogic 6.0上你需要一个weblogic-ejb-jar.xml文件,这个文件应该是这样的:
  
  meta-inf/weblogic-ejb-jar.xml
  
  <weblogic-ejb-jar>
   <weblogic-enterprise-bean>
    <ejb-name>emailmdb</ejb-name>
    <message-driven-descriptor>
     <pool>
      <max-beans-in-free-pool>200</max-beans-in-free-pool>
      <initial-beans-in-free-pool>5</initial-beans-in-free-pool>
     </pool>
     <destination-jndi-name>emailqueue</destination-jndi-name>
    </message-driven-descriptor>
    <jndi-name>jms/emailmdb</jndi-name>
   </weblogic-enterprise-bean>
  </weblogic-ejb-jar>
  
  <ejb-name>描述的名称对应你在ejb-jar.xml中定义的bean名称。然后我们可以定义pool(池)信息。在这个例子中我们将拥有最少5个最多200个mdbs实例。这将允许我们有200个并发的消息发送到队列中。描述的内容告诉容器我们将使用emailqueue查找目的地址。因为我们并没有把它写道代码中,所以如果jms环境发生变化,我们只需要修改部署描述文件,然后重新部署就可以了。
  
  第五步:打包代码:
  现在我们完成了代码和部署描述文件,我们需要把它们打包然后部署到ejb服务器上。这些文件的目录结构大概的样子如下图所示:
  
  例子文件
  
  下载本文的例子.
  
  其中的client,ejb和util目录中应该使编译过的class文件;比如:/client/emailclient.class, ../ejb/emailmdb.class, 和 ../util/emailhelper.class.现在我们通过部署描述符来打包代码:../code% jar cvf emailmdb.jar com meta-inf
  现在我们有了一个email mdb的jar文件,我们把它部署到ejb服务器上。为了测试,在部署完bean之后,运行client你应该看到ejb服务器发送了一个email.要是这一切运行正常你需要确保javamail api mail.jar包含在ejb服务器的classpath中。
  
  结论
  我们已经创建了一个消息驱动bean,你可以看到在jms中他作为一个消费者是多么的简单。消息驱动bean对于ejb组件结构是一个很好的补充,他为开发人员提供了一个方法来创建消费者使它集合化,支持事务处理并且使用了容器的架构。

扫描关注微信公众号