jakarta-ee - CDI:异常,因为处置方法看不到生产方法

标签 jakarta-ee tomcat7 cdi weld

我正在按照一些教程来习惯 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/

相关文章:

java - BeanManager 方法 getReference() 在应用程序初始化期间不可用

jakarta-ee - Glassfish V3、Jboss、SOA supporting、WSO2(embedded Tomcat)上的困惑

java - 文件不再可读

jakarta-ee - 从概念上讲,EJB 层上的负载平衡如何在 Glassfish/任何 ejb 容器中工作

java - 如何访问实体列表中的另一列?

java - Tomcat:请求的资源不可用

java - Tomcat 7.0.42 服务器在 Windows 中随机崩溃

java - 带有 Tomcat 和 Eclipse 的 Jersey 服务

java - java日志文件中$$$view的含义是什么?

java - CDI 编译失败 - 注释类型不适用于此类声明