0

例外マッパーで実際の例外クラスではなく、常に javax.ws.rs.WebApplicationException を取得するのはなぜですか?

@Provider
public class PaymentExceptionHandler implements ExceptionMapper<Exception> {

    /*
     * Maps the Exception object to response Object when any exception is thrown
     * within the application.
     */
    @Override
    public Response toResponse(Exception exception) {
        return Response.status(550)
                .entity(exception)
                .build();
    }

}

これがすでに回答されているかどうかはわかりませんが、何も見つかりませんでした。どんな助けでも大歓迎です。

4

1 に答える 1

0

クラスが応答でPaymentExceptionHandler送信される場合にこの応答を送信する必要があることを理解するために、これを jersey コンテナーの jersey リソースとして登録する必要があります。Exception

throw と同様にnew RunTimeExecption(e)、ジャージはPaymentExceptionHandlerそれに応じて投げます。

PaymentExceptionHandlerジャージー リソースとしてロードします。

パッケージ スキャンまたはその他の方法でリソースをどのようにロードしたかわかりません。これを行う 1 つの方法を以下に示します。

@ApplicationPath("/rest")
public class AuthResourceLoader extends Application
{
    /* (non-Javadoc)
     * @see javax.ws.rs.core.Application#getClasses()
     */
    @Override
    public Set<Class<?>> getClasses()
    {
        Set<Class<?>> classes = new HashSet<Class<?>>();
        exceptionResource(classes);
        return classes;
    }

    private void exceptionResource(Set<Class<?>> classes)
    {
        classes.add(PaymentExceptionHandler.class);
    }
}
于 2014-01-10T16:38:25.813 に答える