消息驱动的bean应该部署在.ear文件中吗?

时间:2016-10-20 16:59:35

标签: java java-ee cdi message-driven-bean

我有一个构建为.war文件的应用程序,我们有一个新的要求来读取JMS队列,我试图添加ejb-jar.xml文件并指向消息监听器,但是没有已部署的应用程序接收消息,并且部署日志不显示有关消息驱动Bean的任何信息。想知道.ear结构是否与整个事物有关。

Environement:CDI,MyBatis,Wildfly 9.2,Java 1.8

谢谢你。

1 个答案:

答案 0 :(得分:2)

您似乎正在尝试使用Java EE 7 Web Profile,它定义了哪些EE 7规范组件必须由支持WAR部署的容器实现。

此配置文件表示" Enterprise JavaBeans(EJB)3.2 Lite"规范必须实施。

EJB Lite规范要求支持:

  • 仅限无状态,有状态和单例会话bean组件
    • 仅限本地业务接口和无接口视图
  • 容器管理的事务和bean管理的事务
  • 声明性和程序化安全性
  • 拦截
  • 本地异步会话bean调用
  • 非持久性EJB计时器服务
  • 部署描述符支持(ejb-jar.xml)

目前WAR部署中没有Message Driven Bean支持。

因此,您有两种选择:

  1. 使用EJB模块和WAR模块将应用程序迁移到完整的EAR部署;
  2. 如果消息驱动的bean与Web模块完全分离,那么您可以将它们部署在独立的EJB模块中。如果您需要共享JPA实体或其他库,那么EAR是一种更容易的方式。
相关问题