bilal bilal - 4 months ago 54
Java Question

CDI deployment failure:WELD-001414 Bean name is ambiguous

I have an application, which has multiple modules and various dependencies. When I deploy the application on Glassfish 4, I am getting error:

org.jboss.weld.exceptions.DeploymentException: WELD-001414 Bean name is ambiguous.
Name JerseyClassAnalyzer resolves to beans: [Managed Bean [class org.glassfish.jersey.internal.inject.JerseyClassAnalyzer]
with qualifiers [@Default @Named @Any], Managed Bean
[class org.glassfish.jersey.internal.inject.JerseyClassAnalyzer]
with qualifiers [@Default @Named @Any]]


What can be the cause? I saw already topics about this and the solution was to edit the annotation but this is not my
EJB
, just a dependency. How can I avoid this exception?

I am using Java EE 6 with JDK 1.7 and Glassfish 4.0.

Answer

Glassfish is already having Jerseys libraries packaged for you, so you need add provided scope into your Maven pom.xml as stated in the docs.

<dependency>
    <groupId>javax.ws.rs</groupId>
    <artifactId>javax.ws.rs-api</artifactId>
    <version>2.0</version>
    <scope>provided</scope>
</dependency>

If you are using any Jersey specific feature, you will need to depend on Jersey directly.

<dependency>
    <groupId>org.glassfish.jersey.containers</groupId>
    <artifactId>jersey-container-servlet</artifactId>
    <version>2.4.1</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>org.glassfish.jersey.core</groupId>
    <artifactId>jersey-client</artifactId>
    <version>2.4.1</version>
    <scope>provided</scope>
</dependency>
Comments