我正在使用 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)
谢谢。