我正在按照一些教程来习惯 CDI,顺便说一句,我遇到了困难。实际上,我有一个 Factory 类负责创建 EntityManager 的实例以供 CDI 使用,并且还有一个处理方法应该在请求结束时关闭由管理器启动的连接。问题是我的处置方法显然看不到我的生产方法,这在 Tomcat 7 出现的错误消息中是明确的。
严重:异常发送上下文初始化事件到类 org.jboss.weld.environment.servlet.Listener 的监听器实例 org.jboss.weld.exceptions.DefinitionException: WELD-001424 声明了以下处理方法但未解析为生产者方法:[Disposer method [[method] public br.com.logtec.producer.DataRepositoryProducer.finalize(EntityManager) ]] 在 org.jboss.weld.bootstrap.Validator.validateDisposalMethods(Validator.java:541) 在 org.jboss.weld.bootstrap.Validator.validateDeployment(Validator.java:371) 在 org.jboss.weld.bootstrap.WeldBootstrap.validateBeans(WeldBootstrap.java:380) 在 org.jboss.weld.environment.servlet.Listener.contextInitialized(Listener.java:182) 在 org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4992) 在 org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5490) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 在 org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1575) 在 org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1565) 在 java.util.concurrent.FutureTask$Sync.innerRun(未知来源) 在 java.util.concurrent.FutureTask.run(未知来源) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(未知来源) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(未知来源) 在 java.lang.Thread.run(未知来源)
这是我的课:
@单例 公共(public)类 DataRepositoryProducer {
private static EntityManagerFactory factory;
@Produces
public EntityManagerFactory getEntityManagerFactory() {
if (factory == null) {
factory = Persistence.createEntityManagerFactory("pu");
}
return factory;
}
@Produces
@DataRepository
@RequestScoped
public EntityManager produceEntityManager() {
return getEntityManagerFactory().createEntityManager();
}
public void finalize(@Disposes EntityManager manager) {
manager.close();
}
有什么线索吗?
最佳答案
按照@Robert Panzer 的建议,我能够解决在处置方法中的@Disposes 注释之后添加我的@DataRepository 的问题。
关于jakarta-ee - CDI:异常,因为处置方法看不到生产方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25315185/