首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jboss EAP 6到EAP 7升级- jar部署失败

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

Stack Overflow用户
提问于 2019-05-14 02:08:37
回答 1查看 37关注 0票数 0

我的项目在JBOSS EAP6上运行。这个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:失败的服务\“CDI {\"jboss.deployment.unit.\"YY.war\".WeldStartService\”=> \“无法启动服务,原因是: java.lang.IllegalArgumentException: WFLYWELD0037:将持久性单元注入CDI托管bean时出错。在注入点保护的javax.persistence.EntityManager wbr.investments.XX.dao.DaoRoot.emOptions\“}}的部署YY.war中找不到名为”“的持久性单元”“

EN

回答 1

Stack Overflow用户

发布于 2019-05-14 02:48:48

关于CDI有相当多的变化。在EAP 7中,CDI是1.2版,在EAP 6中是1.0版。

该错误消息指示您正在尝试访问一个名称为空的持久性单元。我猜这可能是因为使用了下面这样的东西:

代码语言:javascript
复制
public class DaoRoot {
  @Inject
  private EntityManager emOptions;
}

CDI很可能会产生一个未初始化的EntityManager,并失败,并显示您在日志中找到的错误消息。

尝试使用以下命令注入实体管理器

代码语言:javascript
复制
@PersistenceContext(unitName = "...")
private EntityManager emOptions

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

代码语言:javascript
复制
public class EnitityManagerFactory {

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

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

在这些情况下,EAP 6似乎更加宽宏大量,而EAP 7则严格遵循规范。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56117732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档