0

API アプリケーション (API エンドポイントの公開) に使用javax and jerseyしています。ExceptionMapper を実装するプロバイダーを使用して、fasterXml からの例外をキャッチしようとしています (put および post 呼び出しで)。

私の問題は、POST または PUT で、間違った属性名を送信するたびに、マッパーが例外をキャッチする場合とキャッチしない場合があることです。例えば:

  1. アプリケーションを 1 回実行すると、すべてが期待どおりに動作し、例外が発生します。

  2. アプリケーションを再度実行 (再起動) -> マッパーは何もキャッチしません

TomcatでホストしているJersey 2.xを使用しています(春などは使用していません)。

web.xml:

<servlet>
    <servlet-name>api-service-endpoints</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>jersey.config.server.provider.packages</param-name>
        <param-value>
            com.api.providers,
            com.api.resources
        </param-value>

    </init-param>
    <init-param>
        <param-name>jersey.config.server.provider.classnames</param-name>
        <param-value>org.glassfish.jersey.filter.LoggingFilter</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

プロバイダ コード:

@Provider
public class JsonMappingExceptionProvider
    implements ExceptionMapper<JsonMappingException> {

public JsonMappingExceptionProvider() {
    log.info("JsonMappingExceptionProvider created..");
}

private static final Logger log = LoggerFactory
        .getLogger(JsonMappingExceptionProvider.class);

@Override
public Response toResponse(JsonMappingException exception) {
    log.error("Error while parsing input", exception);
    Response response = createBadRequestResponse();
    return response;
}

何か案は?

4

1 に答える 1