我得到异常:
Warning: StandardWrapperValve[org.netbeans.rest.application.config.ApplicationConfig]: Servlet.service() for servlet org.netbeans.rest.application.config.ApplicationConfig threw exception
javax.ejb.AccessLocalException: Client not authorized for this invocation
这是完全正常的,因为该方法未授权。
不幸的是,由于此EJB也是一项REST服务,因此它会引发" 500-糟糕的请求" HTTP状态。相反,我想拥有一个" 401-未经授权"。
我应该不使用EJB安全性,还是应该在ApplicationConfig中捕获此AccessLocalexception,还是应该使用Jersey来实现REST安全性?
角色是在web.xml中定义的,注释在ejb bean上放置。
您可以定义异常,该异常将一般异常映射到HTTP响应中。
import javax.ejb.EJBAccessException;
import javax.ws.rs.core.Response;
import javax.ws.rs.ext.ExceptionMapper;
import javax.ws.rs.ext.Provider;
@Provider
public class EJBAccessExceptionMapper implements
ExceptionMapper<EJBAccessException>
{
@Override
public Response toResponse(EJBAccessException exception)
{
return Response.status(Response.Status.UNAUTHORIZED).build();
}
}