0

JAX-RS および Jersey と一緒にスプリング ブートを使用しています。例外を適切にログに記録し、クライアントに正しい応答を返すためだけにExceptionMappers、さまざまな種類のさまざまな種類の を定義しExceptions、1 つExceptionMapperをマッパーとして定義しました。Fallback単体テスト レベルでは、すべてが正常に動作し、適切なExceptionMapperものはException

<groupId>org.glassfish.jersey.test-framework.providers</groupId>
<artifactId>jersey-test-framework-provider-inmemory</artifactId>

ただし、実行中のアプリケーション (Jetty に組み込まれている) では、をキャッチするフォールバック マッパーのみjava.lang.Exceptionが呼び出され、他のすべては無視されます。私はすべてに対して注釈スキャンを使用しており、FallbackExceptionMapperMyCustomExceptionMapperは両方とも同じパッケージにあり、 で注釈が付けられてい@Providerます。他の例外マッパーがMyCustomExceptionMapper動作しない理由は何ですか?

更新:例外のタイプを to から変更しましたがjava.lang.Exception、これも呼び出されません。ルート Exception ( ) 以外の例外はマッパーによってキャッチされないようです。FallbackExceptionMapperMyCustomExceptionjava.lang

Update2:@Context javax.ws.rs.ext.Providers FallbackExceptionMapper とメソッドでプロバイダーを定義することによりproviders.getExceptionMapper(MyCustomException.class)、MyCustomExceptionMapper のインスタンスを返すことがわかりますが、Jersey がそれを呼び出さない理由が不思議です! 何か案が??

4

0 に答える 0