我正在使用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
endpoint。因此,我按照文档中的描述修改了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)
谢了。
尝试使用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 = (