记录没有失败

时间:2012-12-12 19:45:12

标签: java-ee weblogic-10.x weblogic11g

我正在使用WebLogic 10.3.3。我想在每次调用一个Web服务时写一个数据库的日志条目。

我的问题是,将日志信息发送到数据库的最佳方法是什么?如果数据库已关闭,我不希望日志记录代码停止Web服务。如果日志代码失败,我不希望我的Web服务等待或崩溃。我希望在Web服务代码中完全忽略日志记录例程中的任何错误。

我不确定如何在WebLogic上的Java EE中执行此操作。有什么建议吗?

2 个答案:

答案 0 :(得分:0)

我想你已经给了log4j一个旋转?只需使用try / catch块包围您的日志记录,它就会影响您的服务。

答案 1 :(得分:0)

你对彼得的评论是正确的。

您当然需要一个单独的服务来处理日志记录。

如果记录器停机 - 数据库或服务失败,您将始终遇到问题。

您需要做的是设置JMS队列,最有可能使用基于文件的后备存储,该存储最不可能发生故障。让您的服务写入JMS队列以执行日志记录,并让您的EJB记录器服务从队列中提取消息以写入数据库。

这样,日志消息将立即存储,而不必立即添加到数据库中,同时不要求您的服务等待数据库提交完成。

有一些方法可以在不等待完成响应的情况下写入JMS队列,因此可以最大限度地减少对服务的影响。

我不记得10.3.3是否具有策略网关功能或者是否有10.3.4,但是将客户端组件作为策略实施可以更容易地应用于每个服务而无需实际触及您的服务代码并为您提供可重用的解决方案。