4

在尽可能少地依赖部署中使用的实际应用程序服务器的同时构建 Java 应用程序的最佳(最简单、最无缝)的方法是什么?

比如我想部署在 Apache Geronimo 上,后来又想用 GlassFish,过渡会有多难?抽象每个应用服务器的使用的最佳方法是什么?

请原谅我的无知,我对 Java 开发比较陌生。我想开始一个新项目,但不确定是使用单独的 API 来实现我需要的功能,还是从一开始就在选定的应用服务器之上进行开发。

谢谢你的帮助,

伊万

4

4 回答 4

3

无需过多介绍,即使您可以编写基本的 Java EE 代码,但围绕它的配置并不是很简单。每个应用服务器都有自己的一组配置文件和命名约定(例如,在 IBM WAS 和 JBOSS 中指定 AS 位置的格式不同)。尽管这些对于应用程序开发来说不是很重要,但是一旦进入部署阶段,它们就会变得很重要。就库和您的代码而言,只要您坚持 EJB 标准,您就可以在大多数应用程序服务器上运行您的应用程序(我知道 WAS 和 JBoss——我编写的代码不必更改这些服务器;但是配置,那是另一头野兽!)。

于 2010-08-24T04:50:33.810 回答
2

尽可能遵循 Java EE 规范,而尽可能少遵循服务器规范。

如果我们试图找出Java EE 应用服务器(JBossWAS ...)之间的共同点,答案是服务器供应商必须遵循的 Java EE 规范。如果您对 Java EE 问题有 2 个解决方案,您可以检查哪个解决方案更符合 Java EE 规范而不是服务器规范。

于 2010-08-24T04:58:41.903 回答
1

根据我使用 Jboss 和 Sun AS 的经验,您应该忘记 AS 独立性。

例如,在 sql 中,您可以在不使用特定于供应商的功能的情况下做很多事情。嗯,在 Java EE 中不是这样的。对于 Jboss 和 SAS,即使是“hello world”应用程序也需要不同的配置。越来越多的应用程序增长,您必须使用更多特定于供应商的功能。

特别是,如果您查看官方的 Sun Java EE 教程,您会发现它从一开始就使用 SAS 特定的配置文件(sun-web.xml、sun-ejb-jar.xml 等)。

但以上所有内容仅适用于您使用全系列 Java EE 功能(如 EJB、JMS、mbeans)。我发现,如果您只是将 servlets/jsps 打包在一个战争档案中,那么这样的应用程序仍然可以非常便携。

于 2010-08-24T04:42:33.450 回答
0

如果您有资源,请考虑开发和测试多个应用程序服务器,而不仅仅是您的初始目标。这将允许您 - 从一开始 - 查明需要可配置的内容并相应地编码。

就我个人而言,我会考虑 Glassfish 3.0.1 在这种情况下,因为它是参考实现,所以事情至少应该在那里工作而无需任何特别的努力。

于 2010-08-24T06:23:51.147 回答