当前位置: 首页 > 知识库问答 >
问题:

RESTEasy异步作业服务+Spring MVC?

刘向阳
2023-03-14

我正在使用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/jobsendpoint。因此,我按照文档中的描述修改了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

根据文档,该服务应该返回HTTP202,但它返回了正常的HTTP200,就像我没有调用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个答案

柴寂离
2023-03-14

尝试使用Asynch=true而不是Async=true

 类似资料:
  • 异步Tcp客户端 异步Http客户端 异步Redis客户端 异步Mysql客户端 异步Log日志 异步文件读写 异常Exception

  • 请考虑下图 MyProcess.bpmn 为了用文字来描述它,有一个用户任务(评估)和一个附加到它的计时器(配置为在2秒内触发)。触发计时器后,其Java委托中的Timed自动完成异步服务任务尝试完成用户任务(评估)。完成用户任务(评估)后,流移动到另一个异步服务任务(存储文档),它调用其Java委托,,流结束。 计时器ervice.java StoreDocsService。Java语言 应用程

  • 异步Log日志 use AsyncLog; yield AsyncLog::info('hello world'); yield AsyncLog::debug('test debug', ['foo' => 'bar']); yield AsyncLog::notice('hello world',[], 'group.com'); yield Async

  • 异常Exception 以传统的try,catch抓取异常 如果在业务层不catch,框架层会捕捉,并返回一个500的server error响应。 如果在开发环境会返回一个500的具体错误的trace响应。 try { throw new \Exception("Error Processing Request", 1); //yield throwExc

  • 异步文件读写 读文件 use AsyncFile; $content = (yield AsyncFile::read(__ROOT__."runtime/test.txt")); 写文件 $res = (yield AsyncFile::write(__ROOT__."runtime/test.txt", "hello wordls!")); $res = (yi

  • 异步Mysql客户端 AsyncMysql::query($sql, $usePool = true) 第二个参数设为false将不会使用连接池中的资源,默认都会从连接池中取,配置连接池数量 => config/database.php 具体使用 use AsyncMysql; //设置超时时间 AsyncMysql::setTimeout(2); $res = (