繁体   English   中英

Servlet过滤器和线程?

[英]Servlet Filters and Threading?

我正在Weblogic 10.3.3上构建Web服务,并且正在使用Servlet筛选器将请求记录到数据库。 我不希望过滤器减慢对Web服务的调用。 所以我实际上有两个问题。

1)是过滤器还是我可以使过滤器在单独的线程上进行日志记录? 如果是这样怎么办?

2)有没有一种方法可以动态地打开或关闭过滤器而无需重新部署代码。

谢谢

  1. 过滤器由分配给您的请求的线程执行。 您可以根据需要创建FutureTask进行日志记录,但是Filter内置没有任何功能可以执行此操作。 如果您使用的是Log4J,则可以登录到队列并以这种方式卸载应用程序。
  2. 过滤器已添加到web.xml中,因此您无法关闭或打开过滤器。 如果内部有一个JMX bean可以工作,那么您可以使用JMX控制台来关闭和打开它的功能。

您可能对此感到过早的优化。 如果您记录或过滤内容会成为问题,我将等到有证据证明它之后再开始重新设计以解决问题。

许多日志记录软件都支持“异步日志记录”,将日志事件非常快速地放入队列中,然后一个单独的线程将它们尽快写入持久性存储中。 这样做的缺点是,如果事件仍在队列中,则当应用崩溃时,您更有可能丢失消息。 总开销也稍高,因为您有多个相互协调的线程。

此外,许多日志记录框架都具有“监视配置”选项,该选项会定期检查配置文件。 这使您可以在“热”系统上启用或禁用记录器。

您正在使用什么日志库?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM