我正在使用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)
感谢。
答案 0 :(得分:2)
尝试使用asynch=true
而不是async=true