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.
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>