RestEasy ExceptionMapper没有捕获异常

时间:2011-09-14 14:24:54

标签: exception exception-handling jboss jax-rs resteasy

我从我的应用程序中抛出异常MyCustomException。 (EJB层)

我在Web服务层中有一个异常映射器,如下所示 -

package net.webservices;

import javax.ws.rs.core.Response; 
import javax.ws.rs.ext.Provider; 
import net.common.MyCustomException;

@Provider 
public class EJBExceptionMapper implements 
ExceptionMapper<net.common.MyCustomException>  {

  public Response toResponse(MyCustomException exception) {
    return Response.status(Response.Status.BAD_REQUEST).build();    
}   

  }

我已在web服务层的web.xml注册了我的映射器,如下所示 -

 <context-param>
    <param-name>resteasy.providers</param-name>
    <param-value>net.webservices.EJBExceptionMapper</param-value>        
</context-param>

EJBExceptionMapper未抓住MyCustomException。但它被Web服务实现的catch块捕获。

可能是什么问题?

注意:我不想使用getProviderFactory().addExceptionMapper()

手动注册我的ExceptionMapper

2 个答案:

答案 0 :(得分:1)

我不知道为什么你的解决方案不起作用(但我从未使用过RESTeasy,只使用过Jersey)。无论如何,扩展WebApplicationException可能更简单。这样,您就不必注册提供者:

public class MyCustomException extends WebApplicationException {
    public MyCustomException() {
        super(Response.status(Response.Status.BAD_REQUEST).build());
    }
}

答案 1 :(得分:0)

您需要在catch块中抛出异常(类型为MyCustomException)并向方法签名添加“Throws MyCustomException”