独立守护程序或应用程序容器?

时间:2012-06-28 16:39:15

标签: java architecture glassfish ejb apache-commons-daemon

我一直在研究Apache的commons-daemon,它看起来很酷:基本上它是一个API以及一个帮助您将JAR注册到底层操作系统的库,以便它可以像守护程序服务一样启动和停止。此外,它拦截通常会杀死你的应用程序的操作系统信号,而不是礼貌地关闭。

所以我想知道,如果在EJB中部署业务逻辑并将它们包装在像OGS或JBoss这样的容器中之间做出选择,为什么不创建一个监听端口并响应客户端请求的守护进程JAR? / p>

是否只是app容器提供的所有功能/服务的好处(安全性,日志记录等),或者有时候在app容器上选择守护进程是有利的/ EJB解决方案?

基本上,我问的是:什么时候更适合使用app容器/ EJB解决方案,什么时候使用commons-daemon来帮助构建系统级服务更合适(在Java中)?

免责声明:对这两个选择感兴趣,我知道存在其他解决方案(Web容器,ESB,OSGi等)。但出于这个问题的目的,我只对听到app容器或守护进程解决方案之间的推理感兴趣。提前谢谢!

2 个答案:

答案 0 :(得分:0)

嗯,简单的答案是肯定的,应用服务器(Glassfish或JBoss)为您提供了很多好东西,您必须在纯Java SE应用程序中实现或设置。

然而,它不是那么黑白,你可以用很少的努力获得很多应用程序服务器的优点,我正在编写一个关于这个主题的blog series

我不使用应用服务器的原因是,我们有一个广泛分布的软件产品项目,我们希望避免修补和维护数千个应用服务器实例!

但是,如果您的应用程序将在一个地方运行,则没有理由去Java SE。

答案 1 :(得分:0)

为什么不把它看作系统级(守护程序)和应用程序级别(在容器中)?

这将给出或多或少的明显区别(特别是如果在某些时候与Linux合作)。

对于守护进程:

  • 有自己的生命周期(你可以单独启动和停止它);
  • 不同的权限(可以在不同的用户下运行);
  • 用例类似于CRON,MailServer,同步和任何系统级服务。

对于容器:

  • 托管应用(由某些特权用户通过Container控制台);
  • 大量开箱即用的功能(您已经提到过);
  • 用例一些一般案例业务应用程序。