2

一致するJAX-RSリソースが見つからなかった場合に、カスタムエラーページを表示する方法を探しています。私のアイデアはを使用することでしたが、使用するExceptionMapper例外クラスがわかりません。

@Provider
public class NotFoundMapper implements ExceptionMapper<WHATEXCEPTION?> {
  ...
}

RestEasyには独自仕様NotFoundExceptionがありますが、Jerseyと連携する方法もありますか?理想的には標準に準拠した方法ですか?

4

1 に答える 1

3

Restサービスがlocalhost/restでリッスンしている場合、localhost / rest / asdfはカスタマイズされた404ページを返す必要があるということですか?これはJAX-RSエンジンに固有であり、Jerseyのソースコードを確認する必要があります。たとえば、CXFはWebApplicationExceptionをスローしますが、それをカスタマイズする方法を提供しません。それがどのように行われるかを確認するには、JAXRSInInterceptor.processRequest()の156行目を参照してください。

    org.apache.cxf.common.i18n.Message errorMsg = 
        new org.apache.cxf.common.i18n.Message("NO_ROOT_EXC", 
                                           BUNDLE,
                                           message.get(Message.REQUEST_URI),
                                           rawPath);
    LOG.warning(errorMsg.toString());
    Response resp = JAXRSUtils.createResponse(resource, message, errorMsg.toString(), 
            Response.Status.NOT_FOUND.getStatusCode(), false);
    throw new WebApplicationException(resp);

要約すると、優れた標準的な方法はありません。リクエストフィルターまたはExceptionMapperを使用してみてください。

于 2012-11-06T11:20:46.343 に答える