繁体   English   中英

Java EE应用程序中的线程

[英]Threads in a Java EE application

我有一个Java EE应用程序,它有两个组件:第一个是从Internet上抓取一些信息并将其填入数据库的服务。 其次是用户可以浏览该信息的Web界面(部署在tomcat上)。

什么是实施第一个组件的最佳方法? 它应该作为后台守护程序/服务或容器内的线程运行吗?

我个人将他们分成不同的过程。 除了其他任何东西,它意味着你可以重新启动一个而不用担心另一个。 这也意味着您可以轻松地将它们部署在不同的计算机上,而无需为实际不需要Web界面的服务安装Tomcat。

根据应用程序框架的类型,Spring允许您使用Quartzjava.util.concurrent框架。 Spring有一个TaskExecutor抽象(参见Spring 文档 ),它简化了很多这个,但要检查哪个最适合你的设计。

Spring或Quartz(由Spring管理)然后控制线程或执行器或作业的创建和启动/停止,以及它们的频率/周期和其他调度参数,还管理您可能需要的任何作业池。

我将这些用于我编写的任何Java EE应用程序中的所有后台任务和批处理作业都没有问题。 由于这些作业是Spring管理的POJO,因此它们可以访问Spring所需的完整依赖注入框架等,当然,您可以根据需求的变化或扩展,通过对应用程序配置XML文件的简单更改来切换调度程序框架。 。

在Web容器中使用后台作业没有任何问题,但您必须让Web容器知道它,以便可以正常停止和启动它。

查看web.xml中的load-on-startup标记。 http://wiki.metawerx.net/wiki/Web.xml.LoadOnStartup上有一些建议

暂无
暂无

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

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