我有基于Java servlet的Web应用程序。我想以异步方式实现一些操作,例如写入日志。在Java Web应用程序中执行异步操作的最简单方法
我想避免JMS开销并做一些简单的事情。
在服务器环境中,我自己管理线程似乎不是一个好主意,您可能需要使用服务器线程池等。 简单异步操作的最佳选择是什么?
编辑:
只是为了澄清,因为许多使用log4j的或其他的日志库,写日志操作上建议在这里更多的例子。我感兴趣的是如何异步执行任何不需要顺序执行的操作。想法是立即回复用户,并在另一个线程中继续处理昂贵的操作。
关于日志问题,我们有一个审计日志,我们实现了将大量数据写入数据库,并在审计操作和帮助台期间由用户使用。向DB写入大量信息可能会非常昂贵。我们使用log4j作为系统日志,由于appender是文件appender,因此我们的系统日志没有性能问题。
那么......你需要保证异步操作的执行,或者如果它可能不会被执行,如果 - 例如 - 服务器重新启动? JMS的复杂性大部分源于在这种情况下提供恢复。 – meriton 2009-11-25 23:06:01
好问题。我想它不需要比现在更“保证”,同时进行。例如,如果我的审计日志的数据库由于某种原因不可用,则会导致系统日志中记录该错误。服务器关闭是有趣的角落情景我想在这种情况下,我可以对用户说:切断流量,然后等到队列中没有消息后再关闭服务器。一个显示消息数量的简单servlet可以做.. – Dan 2009-11-25 23:31:23