gpt4 book ai didi

java - Jboss EAP 6 到 EAP 7 升级 - jar 部署失败

转载 作者:行者123 更新时间:2023-12-02 09:54:10 25 4
gpt4 key购买 nike

我的项目在 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: 服务失败\"=> {\"jboss.deployment.unit.\"YY.war\".WeldStartService\"=>\"无法启动服务 原因:java.lang。 IllegalArgumentException:WFLYWELD0037:将持久性单元注入(inject) CDI 托管 bean 时出错。在部署 YY.war 中找不到名为 '' 的持久性单元,用于受注入(inject)点保护的 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,并失败并显示您在日志中找到的错误消息。

尝试使用注入(inject)实体管理器

@PersistenceContext(unitName = "...")
private EntityManager emOptions

如果您想使用普通的@Inject,则必须编写一个生产者方法。

public class EnitityManagerFactory {

@PersistenceContext(unitName = "...")
private EntityManager em;

@Produces
public EntityManger createEntityManager() {
return em;
}
}

EAP 6 在这些情况下似乎更加宽容,而 EAP 7 则非常严格地遵循规范。

关于java - Jboss EAP 6 到 EAP 7 升级 - jar 部署失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56117732/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com