Jersey:如何注册一个省略了一些子类的 ExceptionMapper?

标签 jersey jax-rs

我如何注册一个包罗万象的 ExceptionMapper<Exception>确实如此 不是 拦截 WebApplicationException哪个 Jersey 提供特殊处理?

更新 :我提交了此功能请求:http://java.net/jira/browse/JERSEY-1607

最佳答案

我最终注册了一个 ExceptionMapper:

import com.google.inject.Singleton;
import com.sun.jersey.api.container.MappableContainerException;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.Response;
import javax.ws.rs.ext.ExceptionMapper;
import javax.ws.rs.ext.Provider;

/**
 * @author Gili Tzabari
 */
@Provider
@Singleton
public class RuntimeExceptionMapper implements ExceptionMapper<RuntimeException>
{
    @Override
    public Response toResponse(RuntimeException e)
    {
        if (e instanceof WebApplicationException)
        {
            // WORKAROUND: Attempt to mirror Jersey's built-in behavior.
            // @see http://java.net/jira/browse/JERSEY-1607
            WebApplicationException webApplicationException = (WebApplicationException) e;
            return webApplicationException.getResponse();
        }
        // Jetty generates a log entry whenever an exception is thrown. If we don't register an
        // ExceptionMapper, Jersey will log the exception a second time.
        throw new MappableContainerException(e);
    }
}

关于Jersey:如何注册一个省略了一些子类的 ExceptionMapper?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13716793/

相关文章:

java - Jersey REST 与使用 JSON 相关的问题

java - 如何反序列化 JSON 数组?

java.lang.NoSuchMethodError : javax. ws.rs.core.Application.getProperties()Ljava/util/Map

cookies - Jersey:我可以在 ContainerResponseFilter 中添加 cookie 吗?

java - JAXB - 类集合的 PascalCase 包装器

JavaEE Web JAX-RS : how to match Query params

java - 为什么不对 JAX-RS 中的所有资源使用异步响应?

java - 带有 gradle 的 Jersey 测试框架 - MessageBodyProviderNotFound

java - 使用 Jetty 设置 Jax-rs 2.2

java - 与 JAX-RS 混淆,Jersey 与 JAX-RS 混淆