我有一个关于利用EJB Timer Service的方案。
用例如下: 系统应该能够安排一个任务,该任务将使用某个特定时间戳轮询/询问我们的subversion存储库以查找文件更改。
这个想法是每当计划任务即将运行时,它将对特定的svn存储库执行命令。 出于这个特殊目的,我不会调用任何外部进程,而是使用'纯'java方式使用SVNKit java库http://svnkit.com/
我唯一担心的是: 使用EJB Timer Service执行将调用外部进程的任务是一个好主意吗?我的方式将使用'纯'java方式,但在其他方案中,例如直接调用批处理文件/命令行/外部可执行文件到计时器服务逻辑。
我担心服务器内存使用/性能等的影响。
这是个好主意吗?
我想的另一个想法就是在服务器中使用基于客户端的技术创建一个“桌面”应用程序,例如SWT / Swing,它将进行轮询,然后在那里编写逻辑,但这意味着我需要管理两个应用程序将进行民意调查的“桌面”应用和我将在Glassfish中创建的“网络”用户界面。
我倾向于在我选择的应用服务器中做所有的事情,即glassfish。
之前我使用过EJB Timer但它只调用了数据库而没有调用任何外部服务而只是出现了这种情况所以我在这里提出了一个问题,以便从经验丰富的人那里收集更多的想法。
有什么想法吗?
答案 0 :(得分:3)
理论上,EJB不应该依赖于外部I / O,因为它会干扰容器/服务器对bean实例,线程等的管理。
在实践中,如果采取预防措施,这应该有效。例如:
请记住,EJB 3.0计时器是持久的(与EJB 3.1计时器相比,它可以选择非持久性),这意味着: