我在开发环境中使用JBoss 4.2.2.GA应用服务器。我有一个WAR文件,MyWar.war
,和一个JAR文件ExternalJar.jar
。这些文件的结构通过以下方式:在JBoss中我可以配置一个“共享库”位置吗?
应用WAR文件:
MyWar.war
|
|--- AppClass1.class
|
|--- AppClass2.class
外部JAR文件(由客户提供):
ExternalJar.jar
|
|--- ExternalClass.class
ExternalClass需要使用AppClass1和AppClass2需要使用ExternalClass。当我在JBoss中部署WAR并将JAR放入JBoss的类路径中时,当我运行该应用程序时,出现LinkageError实例化ExternalClass
。看起来好像WAR看到ExternalClass
,但ExternalClass
无法访问WAR内的类。
如果我手动将ExternalJar
放在WAR文件(WEB-INF/lib)中,它工作正常。但我们宁愿不修改存档文件以保持与我们的生产部署的一致性。
在JBoss中是否有配置或设置允许共享库文件夹将被包含在应用的类路径中?
打开此文件 %JBOSS_HOME%\server\<serverName>\deploy\jboss-web.deployer\META-INF\jboss-service.xml
将此属性设置为true:
为什么你不能在你的战争中捆绑的jar作为你的战争构建逻辑的一部分,是否有一个特别的原因? – Romain 2009-12-03 20:23:06
这个罐子将来自客户,我们不会在创建战争的时候拥有它。我们可以将战争交给客户,并要求他创建他的jar .Jboss应该能够在运行时选择它。根据上面的说明,战争和罐子应该能够看到对方。 – 2009-12-03 21:22:00