首页 文章

RestEasy ExceptionMapper没有捕获异常

提问于
浏览
4

我从我的应用程序中抛出异常 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.xml 的Web服务层注册了我的映射器,如下所示 -

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

EJBExceptionMapper 没有 grab MyCustomException . 但它被Web服务实现的catch块捕获 .

可能是什么问题呢?

注意:我不想使用 getProviderFactory().addExceptionMapper() 手动注册我的ExceptionMapper

2 回答

  • 1

    我没有工作(但我从未使用过RESTeasy,只有 Jersey ) . 在任何情况下,扩展 WebApplicationException 可能更简单 . 这样,您就不必注册提供者:

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

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

相关问题