我需要开发一个简单的Java服务,因为:
我应该将它作为独立服务(可能是像Java Service Wrapper这样的服务器),还是让它在像Tomcat这样的容器中运行?两者的好处和坏处是什么?
答案 0 :(得分:2)
如果您不使用HTTP,则必须为Tomcat构建自己的连接器。当我编写这些类型的应用程序时,我只是将它们编写为标准Java应用程序。在Windows机器上,我使用服务包装器,它允许它们成为Windows启动过程的一部分。在非Windows机器上,您只需添加一个启动脚本。
答案 1 :(得分:2)
使用容器(无论哪个)购买了有关启动,停止,缩放,记录等的所有细节,否则你必须自己做,而且总是比你想象的更难(至少当你达到生产时)
特别是可伸缩性是您现在需要考虑的事情。后来改变主意会更加困难。
所以,如果有人已经写了你需要的大部分内容,那么就使用它。
答案 2 :(得分:1)
如果你不使用HTTP,Tomcat并没有真正为你买单。
但是,由于以下原因,我被迫将非HTTP服务器移动到Tomcat,
我们需要一些简单的网页来显示服务器的状态/统计信息,因此我需要一个Web服务器。 Java 6附带一个简单的HTTP服务器,但Tomcat更强大。
我们的操作工具仅适用于运行Tomcat,独立应用程序在监控系统中不受雷达影响。
我们使用DBCP进行数据库池化,在Tomcat下使用它们似乎更舒服。
Tomcat的内存占用量(几MB)对我们来说不是问题,所以自从迁移到Tomcat后我们没有看到任何性能变化。
答案 3 :(得分:1)
在你的情况下,Tomcat对我来说听起来不是一个好选择。 AFAIK它主要用于Servlet和JSP,你没有。您也不需要在应用上部署多个应用程序。服务器等(所以没有“.war”的好处)。
如果您需要依赖注入,连接池,日志记录,网络编程框架等,那里有很多好的解决方案,它们不需要tomcat。
例如,就我而言,我选择了一个独立的应用程序。使用Spring,Hibernate,Netty,Apache Commons DBCP,Log4j等。这些都可以轻松设置,这样你就有了更多的自由。
如果您需要HTTP服务器,可能嵌入Jetty是另一种选择。使用此选项,您可以更好地控制应用程序。与使用tomcat容器相比,这可能会简化您的实现。
答案 4 :(得分:0)
在启动,监控,日志记录,配置,部署等方面,容器可以帮助您避免重新发明轮子。此外,它还使非开发人员更容易理解您的服务。
我不一定会选择tomcat,查看glassfish和germonimo,因为它们更模块化,你可以只需要那些位,并排除http服务器。
我们前面遇到了类似的决定,系统的某些部分最终以jsw为基础,其他部分以.war文件为基础。 .war选项更简单(确保更加标准)来构建和配置。