我在应用程序中抛出异常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

最佳答案

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

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

10-01 02:37