我应该为我的项目选择哪种应用服务器?

时间:2010-04-27 10:11:13

标签: java tomcat jar glassfish war

我目前正在为我所在大学的一些研究人员开发一个应用程序。这是一个可以通过命令行使用的小型java程序。下一步是打包该程序并将其部署到应用程序服务器。一些客户端程序将向服务器提交请求,服务器将调用我编写的工具。最近,我们将向服务器添加更多工具,他必须将请求发送到正确的工具。 哪种应用服务器符合我的需求?我一直在寻找Tomcat,Jetty和Glassfish,但它们似乎只用于Web应用程序。 是否可以在某些与Web上下文不同的上下文中使用这些服务器?我应该使用哪个包存档(jar,war)? 有什么建议吗?

4 个答案:

答案 0 :(得分:2)

你甚至需要一个应用服务器吗?没有什么可以阻止您添加必要的网络绑定并自行部署它。

在你提到的服务器中,你有两个不同的类别:servlet容器和全栈Java EE服务器

Tomcat和Jetty是servlet容器。这并不意味着您只能使用它们来处理Web内容,并且您可以手动添加所需的库以获取完整的Java EE服务器。

Glassfish是一个全栈Java EE服务器,可以与JBoss(两者都是开源)或商业竞争对手Weblogic和Websphere进行比较。

有时这个问题很简单,因为您正在使用的环境要求特定风格的应用服务器。你应该先检查一下。

如果您没有被迫使用应用服务器,我会问您为什么认为需要使用应用服务器?

答案 1 :(得分:2)

  

某些客户端程序会向服务器提交请求,服务器将调用我编写的工具。

最大的问题是服务器端技术以及客户端和服务器之间可以使用的通信协议。您基本上有两个主要选项:HTTP和Web服务(在这种情况下,考虑使用JAX-WS或JAX-RS)或RMI-IIOP和EJB(在这种情况下,您必须使用类似Java EE的服务器,如GlassFish的)。

  

我已经找过Tomcat,Jetty和Glassfish,但它们似乎只用于网络应用。

不是真的。正如我所说,它们也可以用于面向Web服务的应用程序。 GlassFish可用于EJB应用程序。

  

我应该使用哪个包存档(jar,war)

包装将取决于您要编写的应用程序类型,而不是您预先选择的内容,这只是一个后果。 EJB封装在EJB JAR中,通常部署在EAR中;基于Servlet的Web服务部署在WAR中。

您真的需要考虑首先使用哪种技术(目前的详细程度,我无法提供更多指导)。

答案 2 :(得分:0)

我不明白你为什么要在命令行程序中使用tomcat,glassfish或jetty。

如果它是基于命令行的,并且您希望它在服务器端运行,那么您可以编写一个小程序,允许用户例如telnet到您的服务器,从而启动有问题的CLI应用程序,并将输入/输出转发给客户端。

您可能还想查看Java Webstart,它可以轻松部署新版本。

答案 3 :(得分:0)

实际上我们不能用这么少的元素回答。 - 你打算做什么 - 用什么技术 - 你打算在哪里主持你的申请(你有预算?) - 使用哪种语言编写客户端(甚至是未来的客户端)? - 客户可以使用手机(添加一些技术限制......) ....

知道客户会做什么样的请求以及服务器将提供什么样的响应也很棒......

实际上,根据您告诉我们的内容,所有这些应用程序服务器都可以执行您想要的操作...

  

我找过Tomcat,Jetty和   Glassfish但它们似乎是   仅用于Web应用程序

您甚至可以创建一个webapplication(servlet),并在客户端使用httpclient来调用该servlet ......有很多选项:)

vive Paris!