我目前正在使用Tomcat,Spring和JAVA构建应用程序.我Log4J
用作我的日志库.我目前正在将所有内容记录到文本文件中.我遇到的一个问题RuntimeExceptions
是没有记录到任何文件.我想知道是否有办法记录所有RuntimeExceptions
可能抛出到我的应用程序日志文件.如果不是可以让它登录到另一个日志文件?有没有标准的方法来做到这一点?如果是这样,在Tomcat中运行应用程序时有一种标准的方法吗?
预先感谢您的帮助!
在处理JSF ajax请求时抛出异常时,如何处理异常并访问堆栈跟踪?现在,当JSF项目阶段设置为Development时,我只在JavaScript警报中获取异常类名称和消息.更糟糕的是,当JSF项目阶段设置为Production时,没有任何视觉反馈,并且服务器日志不显示有关异常的任何信息.
如果这是相关的,我在Netbeans中使用GlassFish.
更新提供的实体的EJB方法(使用CMT):
@Override
@SuppressWarnings("unchecked")
public boolean update(Entity entity) throws OptimisticLockException {
// Code to merge the entity.
return true;
}
Run Code Online (Sandbox Code Playgroud)
javax.persistence.OptimisticLockException
如果检测到并发更新,则将抛出,这将由调用者(托管bean)精确处理.
public void onRowEdit(RowEditEvent event) {
try {
service.update((Entity) event.getObject())
} catch(OptimisticLockException e) {
// Add a user-friendly faces message.
}
}
Run Code Online (Sandbox Code Playgroud)
但这样做会使javax.persistence
表达层上的API 产生额外的依赖性,这是一种导致紧密耦合的设计气味.
应该包装哪个例外,以便完全省略紧耦合问题?或者是否有一种标准方法来处理此异常,这反过来又不会导致在表示层上强制执行任何服务层依赖性?
顺便说一句,我发现在EJB中(在服务层本身上)捕获此异常然后向客户端(JSF)返回一个标志值是笨拙的.