java - Jboss EAP 6 到 EAP 7 升级 - jar 部署失败
问题描述
我的项目在 JBOSS EAP 6 上运行。这个 XX.war 部署在 Jboss EAP6 中,但现在我们正在升级到 EAP7。当我在 Jboss EAP7 本地部署 war 文件时出现此错误。
项目结构为 1.XX.jar 2.YY.war
XX.jar 首先部署,因为 YY.war 依赖于 XX.jar,但由于某种原因在 JBOSS 7 上,YY.war 部署失败并低于错误。
"{\"WFLYCTL0080: Failed services\" => {\"jboss.deployment.unit.\"YY.war\".WeldStartService\" => \"无法启动服务原因:java.lang.IllegalArgumentException: WFLYWELD0037 : 将持久性单元注入 CDI 托管 bean 时出错。在部署 YY.war 中找不到名为 '' 的持久性单元,用于注入点保护 javax.persistence.EntityManager wbr.investments.XX.dao.DaoRoot.emOptions\"}}"
解决方案
CDI 发生了相当大的变化。在 EAP 7 中,CDI 是 1.2 版,在 EAP 6 中是 1.0。
错误消息表明您正在尝试访问具有空名称的持久性单元。我想这可能是由于使用了这样的东西:
public class DaoRoot {
@Inject
private EntityManager emOptions;
}
CDI 很可能会生成未初始化的 EntityManager 并失败并显示您在日志中找到的错误消息。
尝试使用注入您的实体管理器
@PersistenceContext(unitName = "...")
private EntityManager emOptions
如果要使用 plain @Inject
,则必须编写生产者方法。
public class EnitityManagerFactory {
@PersistenceContext(unitName = "...")
private EntityManager em;
@Produces
public EntityManger createEntityManager() {
return em;
}
}
在这些情况下,EAP 6 似乎更加宽容,而 EAP 7 则非常严格地遵循规范。
推荐阅读
- powershell - 从文件读取到 xml 文档,然后使用 powershell 将 xml 文档保存到文件
- json - Shift JOLT 转换 - 面临以下转换的问题
- java - 通知在模拟器和设备上崩溃
- javascript - 如何从输入中获取@name 的数组索引?
- angular - 在移动应用程序上在没有服务器的情况下在后台发送电子邮件
- vue.js - Vue 中使用的 inheritAttrs: false 和 $attrs 是什么?
- php - Laravel 导入节点模块
- android - 如何在第一个显示屏幕中创建入职/演练?
- ssl - certbot 不更新证书
- sql - 用于 Xpath 查询的 SQL Xml