1

「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 でも動作します)。

ありがとう。

4

1 に答える 1

3

で試してみてasynch=trueくださいasync=true

于 2012-10-31T10:56:14.503 に答える