我应该使用哪个Java EE服务器?

4

好的,这有点不寻常,因为任何一个Java EE容器都可以做我想做的简单事情(XML处理、JPA、Hibernate、SOAP/REST网络服务等)。这是为个人使用而设计的,更多是为了获得技能而不是完成基本功能。我有自己的Linux服务器(Ubuntu Jaunty x86_64),配备商业级互联网,所以我可以安装几乎任何东西。

我现在经常使用Tomcat,但是最近在找工作时遇到了一些情况,他们要求具有特定Java EE容器的经验(这违背了拥有标准的初衷),而且每次要求的容器都不相同。

因此,我正在寻找一个Java EE服务器,它需要满足以下条件:

  1. 目前在市场上有需求
  2. 免费(或者价格不太离谱)
  3. 安装和部署应用程序不会太可怕(磁盘空间、时间)
  4. 可以在Ubuntu x86_64上运行
我已经通过Indeed的关键字搜索得到了一些信息(链接),这告诉我要远离Jetty/Glassfish,即使它们符合"轻量级"和"免费"。我还从这篇SO文章中看到WebSphere是一个臃肿的软件,难以部署/配置,但我不知道这是否准确或最新。我喜欢Tomcat(完全FOSS,相对较小,易于部署,有大量文档/用户),但它比一些更大的项目需求量要小。

那么你会推荐我安装什么?提前感谢。


请问最好的J2EE服务器是哪个? - Cheeso
根据您的描述,您不需要“J2EE”,只需要任何普通的servlet容器即可。 - matt b
我不是“需要” J2EE 来编写我今天想要编写的小应用程序,而是“需要” J2EE 来学习更多关于 J2EE 的知识以便求职。就像我说的,他们要求具有特定实现经验,而我所熟悉的实现都不在其中。 - dj_segfault
1
Cheeso,这不是那篇帖子的重复,因为我的需求完全不同于Konrad的需求。在提交问题之前,我肯定看过那篇帖子。虽然它很有帮助(因为它更多地支持了WebSphere-bashing阵营),但它并没有回答我的问题。 - dj_segfault
6个回答

8

我的个人推荐是JBoss。这不仅是一个稳定的服务器,而且还有其他与JBoss轻松集成的JBoss平台和框架。例如,JBoss ESB就是一个例子。


4

经常看到像JBoss和WebSphere这样的服务器(我已经与它们一起工作了5年)匆忙上市,实现出现了问题。不幸的是,出问题的部分可能很小,但正是你会头疼的地方。

Oracle Weblogic使用MDBs(注释)的实现有问题,让我非常困扰。

如果你想要一个最符合Java EE 5标准、最少出错并且基本可用于生产环境的服务器,选择Glassfish,然后使用Netbeans作为开发IDE。


2
+1 对于JBoss,这是我个人和工作中主要使用的。我也使用过OC4J,发现它更难使用,并且在其类加载机制上更加挑剔,也许我只是习惯了JBoss。但是,JBoss绝对有更多更容易找到的社区支持。因此,如果您是出于个人使用而不会获得支持许可证,那么有更多的用户愿意在您遇到问题时提供帮助,这已经足够理由了。请注意保留HTML标签。

2

就我个人而言,我只使用过Tomcat。在我的职业生涯中,我已经使用它了三年,没有遇到太多配置或部署应用程序的问题。在工作中,我使用Eclipse WTP for Java EE开发人员3.4(欧罗巴版),主要开发利用ICEFaces的JSF应用程序。我们对大多数较小的项目使用Tomcat Web管理器进行部署,对一些更广泛的应用程序则使用Hudson。

但请注意以下几点:

  • 我们托管大约20个不同的Web应用程序,其中大多数是JSF,少数是旧的JSP应用程序。
  • 我们办公室提供的Web应用程序非常狭窄。我们部门目前支持大约20个唯一的用户,因此我们的大多数应用程序并不会接收大量的流量。
  • 我们的大多数Web应用程序都需要很高的处理器性能(例如:这是一个2GB的CSV文件...编写一个计算居住在有3个或更多孩子的家庭中的人口总数的程序...)通常只执行一次运行,每周、每天或甚至每年一次(即“给我所有资源两个小时...然后我去吃午饭”)。
  • 我们的主要Web服务器是一台Solaris 10服务器,配有双核Sparc处理器(如果我没记错的话,主频为1.8 GHz),内存为2GB(我不记得是DDR还是DDR2)。

尽管如此,随着时间的推移,我们的应用环境确实出现了性能问题,这可能更多地与我们的应用程序代码有关,而不是Tomcat本身。我敢打赌,这些问题与我们的处理逻辑和数据分配中的内存管理不良有关。我之所以这样认为,是因为在重新启动Tomcat后,我们的应用程序通常会以非常响应的方式执行,但仅仅一两天后,用户体验就会下降。

你可以根据自己的情况来看待这个问题。我们可能需要解决一些端上的问题,但在局部环境中,Tomcat本身似乎表现得相当好。


1

Oracle官方停止支持Glassfish。那里发现的所有错误(而且有很多)将永远不会得到修复。

Payara现在是最佳选择,因为它是Glassfish的克隆版,但由Java社区继续开发。


1
最近我在求职中遇到了一些情况,在找工作时他们需要特定的J2EE容器的经验(这违背了拥有标准的整个目的),而且每次还不同。
嗯,我认为你已经(部分)自己回答了问题!如果你主要的目的是帮助你找到工作,你需要看看招聘人员在你所在地区所要求的Java EE容器。去你喜欢的招聘网站,查找你所在地区过去几个月的Java / Java EE职位,并计算每种Web容器的数量(还有那些没有指定特定Web容器的职位)。
如果你的研究结果表明你需要学习WebSphere,我深表同情 :-)
不要忘记,“强制”要求实际上可能并不是必须的,如果你在其他领域足够优秀。这完全取决于招聘人员可以找到哪些其他应聘者。不要害怕说“你要求X,但是我拥有Y和Z,这证明我对这种技术有更广泛的经验。”

1
好的,我已经进行了研究,以了解在我的领域中什么是流行的,就像我在问题中概述的那样。但那只是其中一个标准。我得到的印象是,即使WebSphere很受欢迎(离婚也是),也应该避免使用它,这是有用的信息。谢谢。这是我无法在Indeed上的某些图表中看到的信息,这是我需要做出这个决定的信息。 - dj_segfault
1
WebSphere是一个非常庞大的野兽,不适合在家学习的选择。 - Thorbjørn Ravn Andersen
@dj:你的问题让人觉得你学习新的J2EE平台的主要目的是为了找工作。我看不出来你是否系统地研究过(即计算并创建了自己的图表!)每个平台的职位数量。 - Stephen C

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接