Luigi Saggese
Luigi Saggese

Reputation: 5379

Jersey 2.4 and CXF 2.6

I have implemented an API integration with Jersey 2.4 but i have a problem when try to start my tomcat

SEVERE: Servlet.service() for servlet [Jersey REST Service] in context with path [] threw exception [Servlet execution threw an exception] with root cause
java.lang.AbstractMethodError: javax.ws.rs.core.UriBuilder.uri(Ljava/lang/String;)Ljavax/ws/rs/core/UriBuilder;
    at javax.ws.rs.core.UriBuilder.fromUri(UriBuilder.java:119)
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:286)
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:218)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:81)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)

maybe there is a conflict on use of UriBuilder that it's referenced in javax.ws.rs.core and UriBuilderImpl in org.apache.cxf.jaxrs.impl. If i rename cxf-2.6.0.jar in my WEB-INF\lib as zxf-2.6.0.jar (to load as last), all works fine.

How could i solve that problem in an elegant way?

Upvotes: 2

Views: 1953

Answers (1)

Dmytro
Dmytro

Reputation: 516

Yes, it is definitely UriBuilder conflict and when you rename cxf jar you change lookup order making correct version to come first. I would recommend to use Maven for dependency management where one can use exclude tag for unwanted sub-dependency.

Upvotes: 1

Related Questions