在尽可能少地依赖部署中使用的实际应用程序服务器的同时构建 Java 应用程序的最佳(最简单、最无缝)的方法是什么?
比如我想部署在 Apache Geronimo 上,后来又想用 GlassFish,过渡会有多难?抽象每个应用服务器的使用的最佳方法是什么?
请原谅我的无知,我对 Java 开发比较陌生。我想开始一个新项目,但不确定是使用单独的 API 来实现我需要的功能,还是从一开始就在选定的应用服务器之上进行开发。
谢谢你的帮助,
伊万
在尽可能少地依赖部署中使用的实际应用程序服务器的同时构建 Java 应用程序的最佳(最简单、最无缝)的方法是什么?
比如我想部署在 Apache Geronimo 上,后来又想用 GlassFish,过渡会有多难?抽象每个应用服务器的使用的最佳方法是什么?
请原谅我的无知,我对 Java 开发比较陌生。我想开始一个新项目,但不确定是使用单独的 API 来实现我需要的功能,还是从一开始就在选定的应用服务器之上进行开发。
谢谢你的帮助,
伊万
无需过多介绍,即使您可以编写基本的 Java EE 代码,但围绕它的配置并不是很简单。每个应用服务器都有自己的一组配置文件和命名约定(例如,在 IBM WAS 和 JBOSS 中指定 AS 位置的格式不同)。尽管这些对于应用程序开发来说不是很重要,但是一旦进入部署阶段,它们就会变得很重要。就库和您的代码而言,只要您坚持 EJB 标准,您就可以在大多数应用程序服务器上运行您的应用程序(我知道 WAS 和 JBoss——我编写的代码不必更改这些服务器;但是配置,那是另一头野兽!)。
尽可能遵循 Java EE 规范,而尽可能少遵循服务器规范。
如果我们试图找出Java EE 应用服务器(JBoss、WAS ...)之间的共同点,答案是服务器供应商必须遵循的 Java EE 规范。如果您对 Java EE 问题有 2 个解决方案,您可以检查哪个解决方案更符合 Java EE 规范而不是服务器规范。
根据我使用 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 打包在一个战争档案中,那么这样的应用程序仍然可以非常便携。
如果您有资源,请考虑开发和测试多个应用程序服务器,而不仅仅是您的初始目标。这将允许您 - 从一开始 - 查明需要可配置的内容并相应地编码。
就我个人而言,我会考虑 Glassfish 3.0.1 在这种情况下,因为它是参考实现,所以事情至少应该在那里工作而无需任何特别的努力。