RESTEasy异步作业服务+ Spring MVC?

时间:2012-08-20 17:32:45

标签: rest spring-mvc asynchronous resteasy

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

感谢。

1 个答案:

答案 0 :(得分:2)

尝试使用asynch=true而不是async=true