2

次のようなメソッドを持つ単純な RESTEasy アプリケーションがあります。

@POST
@Path("/stuff")
@Produces({"application/json", "application/xml"})
public MyObject doStuff(MultivaluedMap<String, String> String formParams) {
    // do stuff
}

入ってくるメッセージをインターセプトしたいのですが、どういうわけかインターセプターがトリガーされません。ここにあります:

@Provider
@ServerInterceptor
@Precedence("SECURITY")
public class JAXRSInterceptor implements MessageBodyReaderInterceptor {

    public Object read(MessageBodyReaderContext context) throws IOException, WebApplicationException {
        //do stuff

        return context.proceed();
    }
}

RESTEasy の依存関係は次のとおりです。

<dependency>
    <groupId>org.jboss.resteasy</groupId>
    <artifactId>resteasy-jaxrs</artifactId>
    <version>2.3.4.Final</version>
</dependency>

<dependency>
    <groupId>org.jboss.resteasy</groupId>
    <artifactId>resteasy-jaxb-provider</artifactId>
    <version>2.3.4.Final</version>
</dependency>

<dependency>
    <groupId>org.jboss.resteasy</groupId>
    <artifactId>resteasy-jackson-provider</artifactId>
    <version>2.3.4.Final</version>
</dependency>

これが web.xml の一部です。

<web-app>
    <display-name>My frontend</display-name>

    <context-param>
        <param-name>resteasy.scan</param-name>
        <param-value>true</param-value>
    </context-param>

    <listener>
        <listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class>
    </listener>

    <context-param>
        <param-name>resteasy.use.builtin.providers</param-name>
        <param-value>true</param-value>
    </context-param>

    <servlet>
        <servlet-name>Frontend</servlet-name>
        <servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>Frontend</servlet-name>
        <url-pattern>/api/*</url-pattern>
    </servlet-mapping>

    ...

REST サービスは完全に機能し、正常に機能するExceptionMapperもあります。

インターセプターはまだ機能しません。Tomcat 6 と 7 を試しました。何が間違っていますか?

https://github.com/henrik242/resteasy-interceptor-demoで問題を示す簡単な例を作成しました。Tomcat でビルドおよびデプロイし、http://localhost:8080/resteasy-interceptor-demo. テスト #1、#2、および #3 を実行します。

編集:これはバグのようです。https://issues.jboss.org/browse/RESTEASY-797として提出しました

4

0 に答える 0