消息驱动的 bean 是否需要激活规范?

Are activation specs required for message-driven beans?

我有一个非 JMS MDB,我正在将其安装到 Websphere Liberty 服务器中。

package mdb.test;

import javax.ejb.MessageDriven;

@MessageDriven()
public class TheMDB implements MyOwnListener {

  public TheMDB() {}

  @Override
  public void onMyOwnMessage(MyOwnMessage message) {}

}

没有进一步配置,服务器给出以下信息:

[WARNING ] CNTR4015W: The message endpoint for the TheMDB message-driven bean cannot be activated because the mdb.test/TheMDB activation specification is not available. The message endpoint will not receive messages until the activation specification becomes available.

MDB 是否必须具有激活规范?我希望它只是被激活,而不必向服务器添加进一步的配置。

从本质上讲,服务器是在告诉您它找到了一个消息端点,但没有向它传递任何消息。您需要添加激活规范(JMS 或 JCA)以允许 bean 接收消息。关于定义 JCA 激活规范的一些信息:

http://www.ibm.com/support/knowledgecenter/SSEQTP_8.5.5/com.ibm.websphere.wlp.doc/ae/twlp_jca_config_actspec.html

我不知道有什么方法可以在不绑定到激活规范的情况下激活 bean。由于它的功能是处理消息,因此如果没有激活规范,它几乎没有用处。您可能需要虚拟化足够多的 RA 来编写激活规范以取得进展,即使它尚未生成消息也是如此。

Java 用作消息端点的 EE 消息驱动 Bean 必须 使用在 JCA 1.5(或更高版本)资源适配器中定义的 ActivationSpecification 进行部署配置(ra.xml)。