我有一个构建为 .war 文件的应用程序,我们有读取 JMS 队列的新要求,我尝试添加 ejb-jar.xml 文件并指向消息监听器,但没有消息由已部署的应用程序接收,并且部署日志不显示有关消息驱动 bean 的任何信息。想知道 .ear 结构是否与整个事情有关。
环境:CDI、MyBatis、Wildfly 9.2、Java 1.8
谢谢。
最佳答案
您似乎正在尝试使用 Java EE 7 Web 配置文件,它定义了哪些 EE 7 规范组件必须由支持仅 WAR 部署的容器实现。
此配置文件表示必须实现“Enterprise JavaBeans (EJB) 3.2 Lite”规范的要求。
EJB Lite 规范需要支持:
- 仅限无状态、有状态和单例 session Bean 组件
- 仅限本地业务界面和无界面 View
- 容器管理的事务和 Bean 管理的事务
- 声明式和编程式安全性
- 拦截器
- 本地异步 session Bean 调用
- 非持久性 EJB 定时器服务
- 部署描述符支持 (ejb-jar.xml)
目前 WAR 部署中不支持消息驱动 Bean。
因此你有两个选择:
- 将您的应用程序迁移到包含 EJB 模块和 WAR 模块的完整 EAR 部署;
- 如果您的消息驱动 Bean 与 Web 模块完全解耦,那么您可以将它们部署在独立的 EJB 模块中。如果您需要共享 JPA 实体或其他库,那么 EAR 是一种更简单的方法。
关于java - 消息驱动 Bean 是否应该部署在 .ear 文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40160306/