RESTEasy中的HTTP异步处理(下)
在RESTFul WebService一书中,介绍了使用HTTP协议来实现异步请求的一个轻量级设计模式,叫做ASync Job Service。而RESTEasy很好地支持了这个模式,并提供了一个例子说明使用方法。本文承接 http://bluedash.iteye.com/admin/blogs/1273163,动手做些实验。
我们仍然使用RESTEasy中提供的async-job-service这个例子来进行展示。这次我们来通过手工操作这个例子,而不是例子中提供的单元测试,来学习RESTEasy支持的两种轻量级HTTP异步处理方式。
首先需要对MyResource.java做一些改造。将post和put方法中的两处:
Thread.sleep(1000);
Thread.sleep(100000);
mvn jetty:run
curl -X PUT -v http://localhost:9095/resource?oneway=true
* About to connect() to localhost port 9095 (#0)* Trying ::1... connected* Connected to localhost (::1) port 9095 (#0)> PUT /resource?oneway=true HTTP/1.1> User-Agent: curl/7.21.2 (x86_64-apple-darwin10.6.0) libcurl/7.21.2 OpenSSL/1.0.0c zlib/1.2.5 libidn/1.19> Host: localhost:9095> Accept: */*> < HTTP/1.1 202 Accepted< Content-Length: 0< Server: Jetty(6.1.15)< * Connection #0 to host localhost left intact* Closing connection #0
HTTP/1.1 202 Accepted
curl -d "abc" -H "Content-Type:text/plain" -v http://localhost:9095/resource?asynch=true
...< HTTP/1.1 202 Accepted< Location: http://localhost:9095/asyncjobs/1299164229789-1...
curl -v http://localhost:9095/asyncjobs/1299164229789-1
< HTTP/1.1 202 Accepted
curl http://localhost:9095/asyncjobs/1299164229789-1
abc
< HTTP/1.1 200 OK< Content-Type: text/plain