一个简单的
throw new WebApplicationException(400);
或任何其他
throw new ...
由javax.ejb.EJBException
引发,Caused by:
是您刚刚抛出的异常。监视日志时,这很痛苦,因为并非每个异常都会打印堆栈跟踪。但EJBException就是这样做的。 >:(
请理解 - EJBException根本不会影响应用程序,只会打印出每个引发异常的不需要的堆栈跟踪。
EJBException javadoc说:
抛出EJBException以报告调用的业务方法 或者因为意外而无法完成回调方法 错误(例如,实例无法打开数据库连接)。
必须有办法让EJBException保持安静......
(更新)示例:
@Stateless
@Path("roads")
public class RoadsREST {
@PersistenceContext(unitName = "rd")
@GET
@Produces("application/json")
public List<NationalRoads> retrieve() {
CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
Root subs = cq.from(NationalRoads.class);
List<NationalRoads> roads = em.createQuery(cq).getResultList();
if (roads.isEmpty()) {
throw new WebApplicationException(404);
}
return roads;
}
}
答案 0 :(得分:5)
最简单的解决方案是创建WebApplicationException
的子类并使用@ApplicationException
注释它,如下所示:
@ApplicationException
public class RESTException extends WebApplicationException {
private static final long serialVersionUID = 1L;
public RESTException(Status status, String msg) {
super(Response.status(status).entity(msg).type(MediaType.TEXT_PLAIN).build());
}
}
这应该可以阻止异常出现在您的日志文件中
答案 1 :(得分:0)
您可以通过编辑域的config目录中的logging.properties或asadmin set-log-levels来设置日志级别。在admin gui中还有一个屏幕,但使用它有时会完全破坏日志记录