我正在使用 WebLogic 10.3.3。每次调用我的 Web 服务之一时,我都想将日志条目写入数据库。
我的问题是,将日志信息发送到数据库的最佳方式是什么?如果数据库已关闭,我不希望日志记录代码停止 Web 服务。如果日志记录代码失败,我不希望我的 Web 服务等待或崩溃。我希望日志记录例程中的任何错误都被 Web 服务代码完全忽略。
我不确定如何在 WebLogic 上的 Java EE 中执行此操作。有什么建议么?
我正在使用 WebLogic 10.3.3。每次调用我的 Web 服务之一时,我都想将日志条目写入数据库。
我的问题是,将日志信息发送到数据库的最佳方式是什么?如果数据库已关闭,我不希望日志记录代码停止 Web 服务。如果日志记录代码失败,我不希望我的 Web 服务等待或崩溃。我希望日志记录例程中的任何错误都被 Web 服务代码完全忽略。
我不确定如何在 WebLogic 上的 Java EE 中执行此操作。有什么建议么?
我想你已经试了一下 log4j?只需用 try/catch 块包围您的日志记录,它就会影响您的服务。
您对彼得的评论是正确的。
您当然需要一个单独的服务来处理日志记录。
您总是会遇到“如果记录器关闭 - 数据库或服务”丢失消息的问题。
您需要做的是设置一个 JMS 队列,最有可能使用基于文件的后备存储,该后备存储发生故障的可能性最小。让您的服务写入 JMS 队列以执行日志记录,并让您的 EJB 记录器服务从队列中提取消息以写入数据库。
这样,日志消息将立即存储,而不必立即添加到数据库中,同时不需要您的服务等待数据库提交完成。
有一些方法可以在不等待完成响应的情况下写入 JMS 队列,这样您就可以最大限度地减少对服务的影响。
我不记得 10.3.3 是否具有策略网关功能,或者是否在 10.3.4 中出现,但是将您的客户端组件作为策略实现会更容易应用于您的每个服务,而无需实际接触您的服务代码并给出你是一个可重复使用的解决方案。