1

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

谢谢。

4

1 回答 1

3

尝试asynch=trueasync=true

于 2012-10-31T10:56:14.503 回答