【发布时间】: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 实际上是空的(目前),只是在部署持久性单元之前测试可能的解决方案以执行某些操作