Я возился с JAX-RS и создал приложение, которое вызывает службы REST, которые создают JSON. Я попробовал Джерси, и все прошло нормально, но мне пришлось переключиться на RESTEasy, так как мое приложение должно быть построено с JDK5. Я изменил свой web.xml примерно на это:
<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>
Поэтому я ожидаю, что каждый URL, начинающийся с / rest, будет обрабатываться RESTEasy. Мои услуги следующие:
@Path("/services")
public class MyRESTServices {
@GET
@Path("service1")
@Produces(MediaType.APPLICATION_JSON)
public Object service1(Blah blah) {
}
}
Это отлично работало с использованием Джерси, http://localhost/MyContext/rest/services/service1 был привязан в мой метод service1 (). Однако когда я перешел на RESTEasy, у меня было 404:
Статус HTTP 404 - не удалось найти ресурс для относительного: / rest / services / service1 полного пути: http://localhost/MyContext/rest/services/service1
Это означает, что RESTEasy обработал запрос, но не смог найти службу, привязанную к этому URL-адресу.
Однако в моем классе изменение @Path("/services")
на @Path("/rest/services")
сработало. Ты хоть представляешь, почему у меня такое странное поведение? Все учебники / документы, которые я читал, упоминали только относительные пути, не включая префикс / rest ...
/rest
в моем конфигурационном файле Spring. - person Donal Fellows   schedule 09.11.2010