创建消息驱动的 bean

可以使用“创建企业 Bean”向导来创建 EJB 2.0 或 EJB 2.1 消息驱动的 bean。

要创建消息驱动的 bean,必须首先定义 EJB 2.0 或 EJB 2.1 项目。仅 EJB 2.x 项目支持消息驱动的 bean。

EJB 2.0 中引入了消息驱动的 bean,以便支持处理来自 Java 消息服务(JMS)的异步消息。 EJB 2.1 规范扩展了消息驱动的 bean 的定义,以便支持任何消息传递系统,而不仅限于 JMS。相应地,在 EJB 2.1 规范中,对用来定义消息驱动的 bean 的部署描述符元素作了更改。创建 EJB 2.1 消息驱动的 bean 的向导还包括其它页面,可用来定义非 JMS 消息传递系统及其激活配置元素(可选)。

以下代码示例说明了用来定义消息驱动的 bean 的 EJB 2.0 和 EJB 2.1 部署描述符元素之间的差异。

此代码样本显示了部署描述符中有关 EJB 2.0 消息驱动的 bean 的描述:
<message-driven id="Mdb20">
  <ejb-name>Mdb</ejb-name>
  <ejb-class>ejbs.MdbBean</ejb-class>
  <transaction-type>Bean</transaction-type>
  <message-selector>mdbMessage</message-selector>
  <acknowledge-mode>Auto-acknowledge</acknowledge-mode>
  <message-driven-destination>
    <destination-type>javax.jms.Topic</destination-type>
    <subscription-durability>Durable</subscription-durability>
  </message-driven-destination>
</message-driven>
此代码样本显示了部署描述符中有关 EJB 2.1 消息驱动的 bean 的描述:
<message-driven id="Mdb21">
  <ejb-name>Foo</ejb-name>
  <ejb-class>ejbs.FooBean</ejb-class>
  <messaging-type>javax.jms.MessageListener</messaging-type>
  <transaction-type>Bean/transaction-type>
  <message-destination-type>javax.jms.Topic</message-destination-type>
  <activation-config>
    <activation-config-property>
      <activation-config-property-name>destinationType</activation-config-property-name>
      <activation-config-property-value>javax.jms.Topic</activation-config-property-value>
    </activation-config-property>
    <activation-config-property>
      <activation-config-property-name>subscriptionDurability</activation-config-property-name>
      <activation-config-property-value>Durable</activation-config-property-value>
    </activation-config-property>
    <activation-config-property>
      <activation-config-property-name>acknowledgeMode</activation-config-property-name>
      <activation-config-property-value>AutoAcknowledge</activation-config-property-value>
    </activation-config-property>
    <activation-config-property>
      <activation-config-property-name>messageSelector</activation-config-property-name>
      <activation-config-property-value>fooSelector</activation-config-property-value>
    </activation-config-property>
  </activation-config>
  </transaction-type>
</ejb-name>
</message-driven>

在 EJB 2.1 中,规范定义了 <activation-config-property> 元素,它可用来定义应答方式、消息选择符、预订耐久性和目标类型等属性。使用非 JMS 消息传递类型时,向导允许定义需要用于 bean 的 <activation-config-property> 名称和值对。对于 JMS 消息传递系统,向导提供了 JMS 所需的缺省配置属性,例如 subscriptionDurabilityacknowledgeMode

要创建 EJB 2.0 或 EJB 2.1 消息驱动的 bean,请执行以下操作:

  1. 在 J2EE 透视图中,单击文件 > 新建 > 企业 Bean。“创建企业 Bean”向导出现。
  2. 选择消息驱动的 bean 单选按钮。
  3. 选择想要向其添加 bean 的 EJB 项目。可以选择 EJB 2.0 或 EJB 2.1 项目。
  4. Bean 名称字段中,输入要指定给企业 bean 的名称。根据约定,bean 名称应以大写字母开头。
    注: 您可以使用 Unicode 字符来作为 bean 名称,但是与企业 bean 相关联的企业 bean 包和类不支持 Unicode 字符。
  5. 源文件夹字段中,为新的 bean 选择源文件夹。
  6. 缺省包字段中,为新的 bean 输入包名称。
  7. 可选: 对于 EJB 2.x bean,可以选择生成有注释的 bean 类 如果选择此选项,则向导会在 bean 类的 Java™ 代码开头生成注释。 注释根据向导中所指定的内容来定义 bean 的实现。然后,EJB 工具使用这些注释生成必要的 bean 类,并提供插入到 EJB 部署描述符(ejb-jar.xml)的值。如果您熟悉注释,且要使用注释而不是部署描述符来更新 bean,请选择此选项。如果选择了此选项,则其它选项可能会不可用。

    有关更多信息,请参阅基于注释的编程概述

  8. 单击下一步
  9. 对于 EJB 2.1 bean,为消息驱动的 bean 指定要使用的消息传递服务,然后单击下一步
    • JMS 类型:如果要使用 JMS 消息服务,请选择此选项,将 javax.jms.MessageListener 类作为侦听器类型。
    • 其它类型:如果要使用非 JMS 或定制消息传递服务,请选择此选项。 在侦听器类型字段中,输入侦听器类的标准名称。
  10. 指定消息驱动的 bean 的详细信息。
    注: 如果要创建使用非 JMS 消息传递系统的 EJB 2.1 消息驱动的 bean,则某些选项不可用,但可以作为激活配置名称-值对进行手工定义。
    • 事务类型:可指定是由容器还是 bean 来管理 bean 的事务。
    • 目标类型:可指定队列或主题作为消息驱动的 bean 的消息目标。
    • 激活配置:对于使用非 JMS 消息传递类型的 EJB 2.1 消息驱动的 bean,可使用此表配置其它属性。定义的每个名称-值对都会作为 <activation-config-property> 元素添加到部署描述符。
    • 应答方式:对于使用 JMS 类型消息传递和 bean 管理的事务的 bean,可指定会话对所接收消息的应答方式。
    • 耐久性:对于使用 JMS 类型消息传递且消息目标类型为“主题”的 bean,可指定主题预订是持久的还是非持久的。
      • 持续:订户可使用 JMS 保留的唯一标识注册一个持续预订。具有同一标识的后续订户对象将以由先前订户所留下的状态继续预订。如果持续预订没有活动订户,则 JMS 将保留预订的消息,直到预订接收到这些消息或直到它们到期。
      • 不可持续:预订持续时间为订户对象的生存期。这意味着仅当主题的订户处于活动状态时,客户机才看得到针对主题发布的消息。如果订户不是活动的,则客户机将丢失针对其主题发布的消息。
    • Bean 超类型:如果希望新 bean 继承同一 EJB 项目中相同类型的现有 bean,请在下拉列表中选择 bean。
    • Bean 类:输入 bean 类所需的包和类名。缺省情况下,向导根据您定义的 bean 名称和缺省包来建议 bean 类。bean 类可以是向导生成的新类,也可以是项目类路径中的现有类。单击按钮以打开一个对话框,该对话框列示了与 bean 类型相对应的项目中的类。对于带有源代码的现有类,bean 类的名称显示为蓝色。对于现有二进制类,bean 类的名称显示为红色。
    • 消息选择符:对于使用 JMS 类型消息传递的 bean,JMS 消息选择符可用来确定消息 bean 接收哪些消息。
  11. 可选: 对于 EJB 2.1,在消息目标链接字段旁边,单击浏览以链接至消息目标。这将把一个 message-destination-link 元素添加至部署描述符中的 bean。如果选择生成有注释的 bean 类,则消息目标链接不可用。
  12. 可选: 单击下一步,然后在 Bean 超类字段中输入或选择所需的类。如果指定了 bean 超类型,则会禁用此字段。
  13. 单击完成 在部署描述符中会生成和定义新的 bean。
可以使用 EJB 部署描述符编辑器的 Bean 页查看 bean 并更改或添加任何其它设置或扩展和绑定。
反馈
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.