Jakarta ee 无懈可击

Jakarta ee 无懈可击,jakarta-ee,weblogic-10.x,weblogic11g,Jakarta Ee,Weblogic 10.x,Weblogic11g,我使用的是WebLogic 10.3.3。每次调用一个web服务时,我都要向数据库写入一个日志条目 我的问题是,将日志信息发送到数据库的最佳方式是什么?如果数据库关闭,我不希望日志代码停止web服务。如果日志代码失败,我不希望我的web服务等待或崩溃。我希望日志例程中的任何错误都被web服务代码完全忽略 我不知道如何在WebLogic上的JavaEE中做到这一点。有什么建议吗?我想你已经给了log4j一个机会了吧?只要在日志中加上try/catch块,就会影响您的服务。您对Peter的评论是正确

我使用的是WebLogic 10.3.3。每次调用一个web服务时,我都要向数据库写入一个日志条目

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


我不知道如何在WebLogic上的JavaEE中做到这一点。有什么建议吗?

我想你已经给了log4j一个机会了吧?只要在日志中加上try/catch块,就会影响您的服务。

您对Peter的评论是正确的

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

您总是会遇到“如果记录器关闭-数据库或服务”丢失消息的问题

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

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

有一些方法可以在不等待完成响应的情况下写入JMS队列,因此您可以将对服务的影响降至最低


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

是的,但代码在执行时仍在等待。我刚刚发现@Asynchronous,所以我猜如果我用它创建一个日志ejb,那么它应该可以工作。