and java spring jersey spring-boot spring-cloud

java - and - conflicto de primavera nube netflix jersey versión



jersey and spring (4)

Hola, tengo una aplicación de arranque Spring que está usando

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jersey</artifactId> </dependency>

Esto depende de Jersey versión 2.7.

Cuando intentas usar

<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency>

Que internamente utiliza Jersey versión 1.1, la aplicación falla dado las dos versiones diferentes de la misma biblioteca.

Cualquier consejo sobre cómo solucionar este problema, he tratado de usar solo la versión 2.7, pero parece que no son compatibles entre sí.

Gracias

java.lang.NoSuchMethodError: javax.ws.rs.core.Application.getProperties () Ljava / util / Map; en org.glassfish.jersey.server.ApplicationHandler. (ApplicationHandler.java:303) en org.glassfish.jersey.server.ApplicationHandler. (ApplicationHandler.java:284) en org.glassfish.jersey.servlet.WebComponent. (WebComponent. java: 311) en org.glassfish.jersey.servlet.ServletContainer.init (ServletContainer.java:168) en org.glassfish.jersey.servlet.ServletContainer.init (ServletContainer.java:358) en javax.servlet.GenericServlet.init (GenericServlet.java:158) en io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed (LifecyleInterceptorInvocation.java:117) en io.undertow.servlet.core.ManagedServlet $ DefaultInstanceStrategy.start (ManagedServlet.java:220) en io. undertow.servlet.core.ManagedServlet.getServlet (ManagedServlet.java:163) en io.undertow.servlet.handlers.ServletHandler.handleRequest (ServletHandler.java:84) en io.undertow.servlet.handlers.FilterHandler.handleRequest (FilterHandler. java: 82)


Hmm, eso no es bueno. Jersey 1 y 2 son significativamente diferentes. Creo que la única opción que tiene es eliminar el jersey de arranque de arranque de primavera y el código a Jersey 1.1.

Puede valer la pena mirar el código Spring-boot-starter-jersey para ver qué le da cuando configura automáticamente cosas, lo que podría ayudarlo en su codificación.

Es muy desafortunado, ya que se supone que Spring boot te dará un conjunto de dependencias curadas y compatibles, pero parece que spring-cloud-starter-eureka no se ha plegado en Spring boot, por lo que estás atrapado con el uso de una antigua API.


He obtenido la configuración con Jersey 2 y el cliente de Eureka durante toda la nube de primavera para que funcionen al especificar lo siguiente:

<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <excludes> <exclude> <groupId>javax.ws.rs</groupId> <artifactId>jsr311-api</artifactId> </exclude> </excludes> </configuration> </plugin>

El único problema es que las pruebas aún no se están ejecutando. Pero aún estamos tratando de encontrar una solución completa al problema.



Estaba teniendo el mismo problema, hasta que moví el jersey de arranque de primavera a la parte superior de las dependencias. Eso parece curarlo por completo.