「39.2. Spring MVC 統合」セクションで説明されているように、Spring MVC との RESTEasy 統合を使用してい ます 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サービスの1つを呼び出して、これが機能するかどうかをテストしようとしました(Tomcat 6で実行):
POST http://localhost:8080/myservice?async=true
ドキュメントによると、このサービスは HTTP 202 を返すはずですが、async=true
クエリ パラメータなしで呼び出したかのように、通常の HTTP 200 を返しました。
私は自分のサービスで他に何も変更しませんでした。何か不足していますか?
ところで、サービス アノテーションは次のようになります。
@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 でも動作します)。
ありがとう。