保持最小应用程序服务器依赖性的方法?

时间:2010-08-24 04:31:07

标签: java application-server

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

例如,假设我想在Apache Geronimo上部署,后来想要使用GlassFish,那么转换有多难?抽象使用每个应用服务器的最佳方法是什么?

请原谅我的无知,我对Java开发相对较新。我想开始一个新项目,但不确定是否使用单独的API来实现我需要的功能,或者从一开始就在所选的应用服务器上开发。

感谢您的帮助,

伊万

4 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

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

如果我们试图找出Java EE应用服务器中的共同 JBoss WAS ...),请回答是服务器供应商必须遵循的Java EE规范。如果您有两个关于Java EE问题的解决方案,您可以检查哪个解决方案更符合Java EE规范而不是服务器规范。

答案 2 :(得分: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)时,上述所有内容才适用。我发现如果你只在一个war-archive中打包servlets / jsps,那么这样的应用程序仍然可以非常便携。

答案 3 :(得分:0)

如果您有资源,那么请考虑开发和测试多个应用服务器,而不仅仅是初始目标服务器。这将允许您 - 从一开始 - 精确定位需要配置和相应编码的事物。

我个人认为Glassfish 3.0.1在这种情况下是参考实现,因此至少应该在没有任何特别努力的情况下在那里工作。