5

JSF と Jersey の両方を使用した Web アプリケーションがあります。

/contextpath/rest/whatever -> Jersey
/contextpath/everythingelse -> JSF

JSF でエラー、つまり 500 内部サーバー エラーが発生した場合、web.xml の構成によりエラー ページが表示されます。

...
<error-page>
   <error-code>403</error-code>
   <location>forbidden.jsp</location>
</error-page>
<error-page>
    <exception-type>java.lang.Throwable</exception-type>
    <location>/path/to/errorhandler.jsp</location>
</error-page>

これは、「JSF ランド」では意図したとおりに機能します。ただし、Jersey リソースが例外をスローした場合:

  1. ExceptionMapper (Jersey) が例外を処理し、
  2. エラー応答を送信します (例: 403 禁止)
  3. web.xml で定義されているため、obhibited.jsp ページが提供されます。

これには、obhibited.jsp を呼び出すという望ましくない副作用があり、application/json を要求するクライアントに HTML が返されます。私の最初の方法は、エラー ページ ステートメントを条件付きで記述して、残りのリソース以外でのみ開始するようにすることでしたが、これは不可能のようです。

他の提案?

4

1 に答える 1