如果我想在Open Source Glassfish或TomEE等不同服务器上部署一个应用程序。如何在不必为每个应用程序服务器包含不同库的情况下实现这一目标?作为一个例子,如果想使用Jersey作为其余框架和eclipselink作为持久性框架,我必须确保它们都支持这些框架。但是在TomEE的情况下,它还附带了其他实现,如OpenJPA。
是否可以仅使用项目而不是服务器库+项目库的组合来发送依赖项? 什么是实现服务器兼容性的好方法?
任何描述解决方案的信息或链接或帮助我理解为什么这样做都会很棒。
提前致谢
答案 0 :(得分:0)
我能想到的简单解决方案是使用ant任务为每个服务器创建war文件。实际上最多可以有2-3台服务器,如tomcat ee,jboss和glasfish。因此,为tomcatWar,jbossWar和glassfishWar创建3个ant任务,每个ant任务确保在战争中也运送所需的jar。这是一个更容易和可扩展的解决方案,也易于理解和修改新的要求。
答案 1 :(得分:0)
这更多是应用程序服务器类加载问题,通常所有应用程序服务器都有配置文件的规定,您可以将其放入应用程序并指示服务器加载Web应用程序中包含的库,而不是应用服务器。例如,Weblogic有一个weblogic.xml
文件放在WEB-INF
war应用程序中,您可以在其中指示服务器更喜欢应用程序打包库。对于JBoss,有类似的配置文件jboss-deployment-structure.xml
。这样,即使服务器具有等效的库,也可以更容易地拥有包含所有依赖项的自包含应用程序。此外,您可以升级到比应用程序服务器支持的更高版本的库,否则您必须诉诸各种黑客。