java - traduccion - resteasy maven
RESTEasy-@Path requiere un camino completo? (2)
En JBoss AS 7.1 también tuve que agregar para agregar resteasy.resources ... que se explica aquí http://www.javaroots.com/2013/05/creating-rest-services-with-rest-easy.html puede obtener un error como este: No se pudo encontrar el recurso para relative: / application / test of full path: ... Tiene que definir el parámetro de contexto resteasy.resource con la ruta completa de la clase Rest.
Estaba jugando con JAX-RS e hice una aplicación que llama a los servicios REST que producen JSON. Intenté Jersey y todo salió bien, pero tuve que cambiar a RESTEasy ya que mi aplicación necesita ser construida con JDK5. Cambié mi web.xml a algo como esto:
<web-app>
<context-param>
<param-name>resteasy.scan</param-name>
<param-value>true</param-value>
</context-param>
<listener>
<listener-class>
org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap
</listener-class>
</listener>
<servlet>
<servlet-name>RESTEasy</servlet-name>
<servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>RESTEasy</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
<!-- ... -->
</web-app>
Así que espero que cada URL que comienza con / rest sea manejada por RESTEasy. Mis servicios son los siguientes:
@Path("/services")
public class MyRESTServices {
@GET
@Path("service1")
@Produces(MediaType.APPLICATION_JSON)
public Object service1(Blah blah) {
}
}
Esto funcionó bien usando Jersey, http://localhost/MyContext/rest/services/service1 estaba vinculado a mi método service1 (). Cuando cambio a RESTEasy, sin embargo, tuve un 404:
Estado HTTP 404: no se pudo encontrar el recurso correspondiente: / rest / services / service1 de la ruta completa: http://localhost/MyContext/rest/services/service1
Lo que significa que RESTEasy manejó la solicitud pero no pudo encontrar ningún servicio vinculado a esta URL.
Sin @Path("/services")
, en mi clase, cambiar @Path("/services")
a @Path("/rest/services")
funcionó. ¿Tienes alguna idea de por qué tengo este extraño comportamiento? Todos los tutoriales / documentos que leí mencionan solo las rutas relativas, sin incluir el prefijo / rest ...
Solución: agregue lo siguiente en su web.xml
<context-param>
<param-name>resteasy.servlet.mapping.prefix</param-name>
<param-value>/rest</param-value>
</context-param>
Donde / rest es el comienzo de su <url-pattern>/rest/*</url-pattern>
(Fuente: http://docs.jboss.org/resteasy/docs/2.0.0.GA/userguide/html/Installation_Configuration.html#d0e72 )