- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在从事一个部署在 中的项目。 Glassfish 4.1 .依赖注入(inject)是使用 CDI 进行的,我在尝试部署应用程序时遇到了问题。我得到的错误如下(通常我在代码中“翻译”我的类的名称,所以整个帖子都是用同一种语言,我现在不会这样做,所以我可以复制/粘贴并避免一些翻译打字错误):
服务器日志
org.glassfish.deployment.common.DeploymentException: CDI deployment failure:Exception List with 3 exceptions:
Exception 0 :
org.jboss.weld.exceptions.DeploymentException: WELD-001409: Ambiguous dependencies for type GestorUsuarios with qualifiers @Default
at injection point [BackedAnnotatedField] @Inject private ar.edu.unt.sigea.servicios.impl.GestorPersonasImpl.gestorUsuarios
at ar.edu.unt.sigea.servicios.impl.GestorPersonasImpl.gestorUsuarios(GestorPersonasImpl.java:0)
Possible dependencies:
- Session bean [class ar.edu.unt.sigea.servicios.impl.GestorUsuariosImpl with qualifiers [@Any @Default]; local interfaces are [GestorUsuarios],
- Managed Bean [class ar.edu.unt.sigea.servicios.impl.GestorUsuariosImpl] with qualifiers [@Any @Default]
...[Stack trace]...
Exception 0 :
org.jboss.weld.exceptions.DeploymentException: WELD-001409: Ambiguous dependencies for type RepositorioMenu with qualifiers @Default
at injection point [BackedAnnotatedField] @Inject private ar.edu.unt.sigea.servicios.impl.GestorUsuariosImpl.repositorioMenu
at ar.edu.unt.sigea.servicios.impl.GestorUsuariosImpl.repositorioMenu(GestorUsuariosImpl.java:0)
Possible dependencies:
- Managed Bean [class ar.edu.unt.sigea.repositorio.RepositorioMenu] with qualifiers [@Any @Default],
- Session bean [class ar.edu.unt.sigea.repositorio.RepositorioMenu with qualifiers [@Any @Default]; local interfaces are [RepositorioMenu]
...[Stack trace]...
Exception 0 :
org.jboss.weld.exceptions.DeploymentException: WELD-001409: Ambiguous dependencies for type RepositorioOperacion with qualifiers @Default
at injection point [BackedAnnotatedField] @Inject ar.edu.unt.sigea.repositorio.RepositorioMenu.repositorioOperacion
at ar.edu.unt.sigea.repositorio.RepositorioMenu.repositorioOperacion(RepositorioMenu.java:0)
Possible dependencies:
- Managed Bean [class ar.edu.unt.sigea.repositorio.RepositorioOperacion] with qualifiers [@Any @Default],
- Session bean [class ar.edu.unt.sigea.repositorio.RepositorioOperacion with qualifiers [@Any @Default]; local interfaces are [RepositorioOperacion]
(顺便说一句,我不知道为什么它说
3 exceptions
并且都显示为
Exception 0
)
@Stateless
public class GestorPersonasImpl implements GestorPersonas {
@Inject
private GestorUsuarios gestorUsuarios;
public GestorUsuarios getGestorUsuarios() {return gestorUsuarios;}
public void setGestorUsuarios(GestorUsuarios gestorUsuarios) {
this.gestorUsuarios = gestorUsuarios;
}
// Other fields and methods
}
@Stateless
public class GestorUsuariosImpl implements GestorUsuarios {
@Inject
private RepositorioMenu repositorioMenu;
public RepositorioMenu getRepositorioMenu() {return repositorioMenu;}
public void setRepositorioMenu(RepositorioMenu repositorioMenu) {
this.repositorioMenu = repositorioMenu;
}
// Other fields and methods
}
@Stateless
@LocalBean
public class RepositorioMenu extends RepositorioGenerico<Menu> {
@Inject
private RepositorioOperacion repositorioOperacion;
public RepositorioOperacion getRepositorioOperacion() {return repositorioOperacion;}
public void setRepositorioOperacion(RepositorioOperacion repositorioOperacion) {
this.repositorioOperacion = repositorioOperacion;
}
// Other fields and methods
}
@Dependent
@Stateless
@LocalBean
public class RepositorioOperacion extends RepositorioGenerico<Operacion> {
// This class doesn't have injection points
// just put it here for the reference made in the error message
}
父类
RepositorioGenerico<Menu>
只是一个具有一些通用方法与数据库交互的类和
Menu
是一个实体类。接口(interface)如下:
@Local
public interface GestorPersonas {
// methods definitions, implemented by GestorPersonasImpl
}
@Local
public interface GestorUsuarios {
// methods definitions, implemented by GestorUsuariosImpl
}
每个注入(inject)点我只有一个可注入(inject)类,所以我不明白为什么注入(inject)失败。我不知道是否需要有关我的代码的更多详细信息,所以问我,我会编辑帖子;我只写我认为需要的部分。
@Produces
使用了注释,AFAIK,在这种情况下我不需要它。
It is not annotated with an EJB component-defining annotation or declared as an EJB bean class in ejb-jar.xml.
javax.ejb
javadoc EJB 组件定义注释是以下之一:
@MessageDriven
,
@Stateful
,
@Stateless
或
@Singleton
.但是我见过其他使用 CDI 的项目使用 EJB(例如,
@Stateless
bean 被注入(inject)到其他地方)。另一方面,我一直在阅读
Beginning Java EE 7 by Antonio Goncalves那里说(第 2 章 - 上下文和依赖注入(inject)):
Anatomy of a CDI Bean
According to the CDI 1.1 specification, the container treats any class that satisfies the following conditions as a CDI Bean:
- It is not a non-static inner class,
- It is a concrete class, or is annotated @Decorator, and
- It has a default constructor with no parameters, or it declares a constructor annotated @Inject.
Then a bean can have an optional scope, an optional EL name, a set of interceptor bindings, and an optional life-cycle management.
@Stateless
或其他)进行依赖注入(inject)。
WELD-2.2.13.Final
CDI 实现(根据服务器日志消息
INFO: WELD-000900: 2.2.13 (Final)
)。
INFO: Portable JNDI names for EJB RepositorioUsuarioImpl: [java:global/sigea-ear-0.8-SNAPSHOT/sigea-model-0.8-SNAPSHOT/RepositorioUsuarioImpl, java:global/sigea-ear-0.8-SNAPSHOT/sigea-model-0.8-SNAPSHOT/RepositorioUsuarioImpl!ar.edu.unt.sigea.repositorio.RepositorioUsuario]
INFO: Portable JNDI names for EJB RepositorioAlumnoImpl: [java:global/sigea-ear-0.8-SNAPSHOT/sigea-model-0.8-SNAPSHOT/RepositorioAlumnoImpl, java:global/sigea-ear-0.8-SNAPSHOT/sigea-model-0.8-SNAPSHOT/RepositorioAlumnoImpl!ar.edu.unt.sigea.repositorio.RepositorioAlumno]
INFO: Portable JNDI names for EJB RepositorioMenuImpl: [java:global/sigea-ear-0.8-SNAPSHOT/sigea-model-0.8-SNAPSHOT/RepositorioMenuImpl, java:global/sigea-ear-0.8-SNAPSHOT/sigea-model-0.8-SNAPSHOT/RepositorioMenuImpl!ar.edu.unt.sigea.repositorio.RepositorioMenu]
INFO: Portable JNDI names for EJB GestorUsuariosImpl: [java:global/sigea-ear-0.8-SNAPSHOT/sigea-model-0.8-SNAPSHOT/GestorUsuariosImpl, java:global/sigea-ear-0.8-SNAPSHOT/sigea-model-0.8-SNAPSHOT/GestorUsuariosImpl!ar.edu.unt.sigea.servicios.GestorUsuarios]
INFO: Portable JNDI names for EJB GestorPersonasImpl: [java:global/sigea-ear-0.8-SNAPSHOT/sigea-model-0.8-SNAPSHOT/GestorPersonasImpl!ar.edu.unt.sigea.servicios.GestorPersonas, java:global/sigea-ear-0.8-SNAPSHOT/sigea-model-0.8-SNAPSHOT/GestorPersonasImpl]
INFO: Portable JNDI names for EJB RepositorioPersonaImpl: [java:global/sigea-ear-0.8-SNAPSHOT/sigea-model-0.8-SNAPSHOT/RepositorioPersonaImpl, java:global/sigea-ear-0.8-SNAPSHOT/sigea-model-0.8-SNAPSHOT/RepositorioPersonaImpl!ar.edu.unt.sigea.repositorio.RepositorioPersona]
INFO: Portable JNDI names for EJB RepositorioOperacionImpl: [java:global/sigea-ear-0.8-SNAPSHOT/sigea-model-0.8-SNAPSHOT/RepositorioOperacionImpl!ar.edu.unt.sigea.repositorio.RepositorioOperacion, java:global/sigea-ear-0.8-SNAPSHOT/sigea-model-0.8-SNAPSHOT/RepositorioOperacionImpl]
我不知道这是否会导致注入(inject)点出现错误,但听起来很可疑(而且我不知道如何更改)。它也出现在第一次尝试中,但正如我所说,它从未引起我的注意。现在日志和类
Fatal: Exception during lifecycle processing
org. glassfish.deployment.common.DeploymentException: CDI deployment failure:Exception List with 2 exceptions:
Exception 0 :
org.jboss.weld.exceptions.DeploymentException: WELD-001409: Ambiguous dependencies for type GestorPersonas with qualifiers @Default
at injection point [BackedAnnotatedField] @Inject ar.edu.unt.sigea.inicio.RegistroBean.gestorPersonas
at ar.edu.unt.sigea.inicio.RegistroBean.gestorPersonas(RegistroBean.java:0)
Possible dependencies:
- Session bean [class ar.edu.unt.sigea.servicios.impl.GestorPersonasImpl with qualifiers [@Any @Default]; local interfaces are [GestorPersonas],
- Managed Bean [class ar.edu.unt.sigea.servicios.impl.GestorPersonasImpl] with qualifiers [@Any @Default]
...[Stack trace]...
Exception 0 :
org.jboss.weld.exceptions.DeploymentException: WELD-001409: Ambiguous dependencies for type GestorUsuarios with qualifiers @Default
at injection point [BackedAnnotatedField] @Inject ar.edu.unt.sigea.inicio.SesionUsuarioBean.gestorUsuarios
at ar.edu.unt.sigea.inicio.SesionUsuarioBean.gestorUsuarios(SesionUsuarioBean.java:0)
Possible dependencies:
- Session bean [class ar.edu.unt.sigea.servicios.impl.GestorUsuariosImpl with qualifiers [@Any @Default]; local interfaces are [GestorUsuarios],
- Managed Bean [class ar.edu.unt.sigea.servicios.impl.GestorUsuariosImpl] with qualifiers [@Any @Default]
...[Stack trace]...
参与类(class)
@Named(value = "registroBean")
@ViewScoped
public class RegistroBean implements Serializable {
private static final long serialVersionUID = 2181909526300424451L;
@Inject
GestorPersonas gestorPersonas;
// fields, methods, etc
}
@Named(value = "sesionUsuarioBean")
@SessionScoped
public class SesionUsuarioBean implements Serializable {
private static final long serialVersionUID = 2938631472102116238L;
@Inject
GestorUsuarios gestorUsuarios;
// fields, methods, etc
}
注入(inject)的字段显示在主要部分中。
最佳答案
颠倒互联网2周后,我终于尝试部署在上野蝇 10.0.0 服务器,现在我的应用程序部署没有问题。所以我必须得出结论,这是 Glassfish 上的一个错误。 Pitty,因为我使用的是最新版本(4.1.1),它是基本的(我认为)作为 CDI 发现。希望Payara解决了这个问题,但我现在不会尝试。
我必须说:如果一个服务器被认为是“Java EE 7 兼容的”,那么它不应该被发布这种错误。
如果有人知道讨论论坛或知道不同服务器的一些基准测试结果,请将其注释掉。 为你感到羞耻 Glassfish
关于java - Glassfish 4.1 CDI WELD-001409 : Ambiguous dependencies,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38003014/
我正在尝试从 Glassfish+Jersey+Weld 迁移到 Jetty。 我有这样的设置:gist of pom.xml, web.xml and Java launcher . 应用程序似乎可
注意:我已经尝试过类似问题的可用解决方案。 我正在使用JSF,Java 8,Tomcat 9,Maven,H2 db开发一个简单的CRUD应用程序。 当我尝试启动服务器时,发生以下异常 由以下原因
我刚刚将 Weld 从版本 2.4.4 更新到 3.0.1。我在应用程序启动时遇到以下错误,但找不到解决方案。我正在使用 Weld SE。 Sep 15, 2017 1:25:12 PM org.jb
我想使用 WELD SE 和 JEE8 (CDI 2.0) 创建 REST 资源的单元测试。 这是 REST 资源类的代码: @Path("/members") @RequestScoped publ
我正在使用 NetBeans 和 Glassfish 4.1.1 开发一个 Web 应用程序。我使用 JSF 和 CDI 来管理 Facelets 的支持 bean。由于在更改代码中的任何内容后不久,
从 JPA 2.1 开始,可以将 EJB 注入(inject)到实体监听器中。然而,WildFly 9.0.2 final 失败并出现以下异常。 15:41:12,125 ERROR [org.jbo
我使用 Weld SE 创建了一个简单的 JavaSE 应用程序。我正在尝试使用 gradle run 运行它会抛出异常: :compileJava UP-TO-DATE :processResour
我正在尝试在 DAO 类中注入(inject)一个实体管理器并使用 Weld 容器对其进行测试,但我不断收到以下异常: org.jboss.weld.exceptions.NullInstanceEx
由于某种原因,以下代码不起作用,我不明白为什么。我目前的,相当随意的,从大惊小怪的几个细微变化的信念是,因为 bean 是在 ExternalContext 之前创建的。它导致异常。但是,Extern
我有一个 Java 8 项目和一个 JBoss 7.1.0GA 服务器。我有一个带有全局变量的批处理类 @EJB public MyInterface delegate; 它在我的 ejb-jar.x
我的项目昨天运行良好。我唯一做的就是将结构从单一 war 更改为多模块 pom。如果我正确理解堆栈跟踪,则焊接和omnifaces websocket lib之间存在歧义。但是,在堆栈跟踪上似乎没有对
我按照文档(https://docs.jboss.org/weld/reference/latest/en-US/html/injection.html)创建限定符,现在我在wildfly-10.1.
我正在开发一个 JavaFX 2 项目,并且该应用程序必须使用另一个 main 方法(根据生成的 JAR list 为 com.javafx.main.Main)启动。据官方焊缝reference引导
我们有一个 Web 应用程序,目前正在使用 Java EE 7、JSF 2.2 和 Glassfish 4.0 开发。有两个特定的托管 Bean,它们具有循环依赖关系。 Usuario Control
我正在使用 Weld 来观察事件。我认为有一种方法可以指定观察者是否异步,但我没有找到该注释或文档。 观察者可以是异步的吗?如果是这样,我需要做什么才能做到这一点? 最佳答案 有一个开放请求:CDI-
我正在尝试将 war 部署到 JBoss AS 7.1.1 服务器中,但在尝试注入(inject) EntityManager 时部署失败: 17:44:48,037 ERROR [org.jboss
我尝试在 Weld 中制作装饰器,但 Weld 返回错误。我不明白我的错误是什么。我使用了相同的 Weld 示例“weld-se-numberguess”,并创建了一个装饰器扩展游戏。 Set 18
我使用 JBoss AS 7.1.1 + CDI (Weld) + JSF + Intellij IDEA。我创建了项目并下载了文件: 1. jsf-api.jar 2. jsf-impl.jar 3
我正在搭建学习 JavaEE7 中 CDI 的基础环境。我有以下用于启动 Weld 的代码。只是启动和关闭。 package com.anshbansal; import org.jboss.weld
我使用 weld se 2.0 和其他简单的依赖项构建了一个应用程序。在我的开发环境(eclipse)中这工作正常,没有错误,但是......在生产中应用程序完全崩溃并且焊接的实习生依赖部分抛出“模糊
我是一名优秀的程序员,十分优秀!