【发布时间】:2012-08-16 01:20:10
【问题描述】:
我正在使用 RESTEasy 与 Spring MVC 的集成,如“39.2. Spring MVC 集成”部分中所述 http://docs.jboss.org/resteasy/docs/2.0.0.GA/userguide/html/RESTEasy_Spring_Integration.html
我想尝试 RESTEasy 的“异步作业服务”实现,如下所述: http://docs.jboss.org/resteasy/docs/2.3.4.Final/userguide/html/async_job_service.html
阅读文档,我的假设是 RESTEasy 将拦截请求并使用 HTTP 202 进行响应,并执行排队和跟踪作业并创建 .../async/jobs 端点。所以我按照文档中的描述修改了我的 web.xml。这是它的样子:
<web-app>
<context-param>
<param-name>resteasy.async.job.service.enabled</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>resteasy.async.job.service.base.path</param-name>
<param-value>/asynch/jobs</param-value>
</context-param>
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
我尝试通过像这样调用我的一项 REST 服务(在 Tomcat 6 下运行)来测试这是否有效:
POST http://localhost:8080/myservice?async=true
根据文档,该服务应该返回 HTTP 202,但它返回正常的 HTTP 200,就好像我在没有 async=true 查询参数的情况下调用一样。
我的服务没有改变任何其他内容。我错过了什么吗?
顺便说一句,服务注释是这样的:
@Controller
@Path("/")
public class MyServices {
@POST
@Produces({MediaType.APPLICATION_XML})
@Path("myservice")
public Response createMyResource(@Context UriInfo uri, myResource) {
// create the resource
// construct and return a OK Response
}
}
有人试过成功吗?如果没有,您是否有另一种易于使用的替代方法来对 RESTEasy RESTful 服务进行异步调用(也适用于在 tomcat 下运行的 Spring)
谢谢。
【问题讨论】:
标签: rest spring-mvc asynchronous resteasy