【问题标题】:Wildfly - How to startup bean before persistence is loaded?Wildfly - 如何在加载持久性之前启动 bean?
【发布时间】:2014-05-29 18:00:58
【问题描述】:

我想在 Wildfly 8.0 中加载 Persistence Unit 之前执行一些逻辑。 我有这样的结构:

  • xxx.ear
    • before-persistence-bean.jar
    • beans.jar
    • xxx.war

beans.jar 包含带有 persistence.XML 和会话 bean 的实体 bean

before-persistence-bean.jar 包含一个类:

@Startup
@Singleton
public class BeforePersistenceServiceBean {

    @PostConstruct
    public void performOperations() {...}

}

在 application.xml 我有:

<initialize-in-order>true</initialize-in-order>
<module>
    <ejb>before-persistence-bean.jar</ejb>
</module>
<module>
    <ejb>beans.jar</ejb>
</module>
<module>
    <web>
        <web-uri>xxx.war</web-uri>
        <context-root>/xxx</context-root>
    </web>
</module>

现在,在启动 Wildfly 后出现以下错误:

service jboss.persistenceunit."xxx.ear/beans.jar#pu_name" (missing) dependents: 
[service jboss.deployment.subunit."xxx.ear"."before-persistence
bean.jar".component.BeforePersistenceServiceBean.START] 

但是 BeforePersistenceServiceBean 不依赖 Persistence Unit,这是怎么回事?

---编辑---

在持久性开始之前未能部署此 bean 后,我使用了解决方案 类似于CDI Extension for Flyway 中的描述(即使用 Hibernate Integrator API)

【问题讨论】:

  • 能否提供sn-p的代码?这将有助于调试它
  • 方法 performOperations 实际上是空的(目前),只是在部署持久性单元之前测试可能的解决方案以执行某些操作

标签: java jpa ejb ear wildfly


【解决方案1】:

如果您的 EAR 表明您需要 subdeployments isolated,请将 jboss-deployment-structure.xml 添加到 META-INF 目录。

我会想象内容看起来像

<subsystem xmlns="urn:jboss:domain:ee:1.0" >            
  <ear-subdeployments-isolated>false</ear-subdeployments-isolated>
  <sub-deployment name="xxx.war">
    <dependencies>
      <module name="deployment.xxx.ear.beans.jar" />
    </dependencies>
  </sub-deployment>
</subsystem>

【讨论】:

  • 它没有帮助,ear-subdeployments-isolated 是否设置为 true 或 false - 同样的问题(服务 jboss.persistenceunit."xxx.ear/beans.jar#pu_name"(缺失))
  • 我认为答案是肯定的,但是您的 beans.jar 使用 JPA 吗?
  • 是的,正如我所说,beans.jar 包含带有 JPA persistence.xml 的实体 bean,但是 before-persistence-bean.jar 既不依赖 beans.jar 也不依赖 JPA
  • 不,错误消息中没有更多内容,只是缺少依赖项......我找到了问题的编辑部分中描述的antoher解决方案,谢谢
猜你喜欢
  • 2013-08-31
  • 2016-09-24
  • 2021-04-14
  • 2017-01-10
  • 1970-01-01
  • 1970-01-01
  • 2021-05-22
  • 1970-01-01
  • 2015-11-27
相关资源
最近更新 更多