Java 在JBoss中,我可以配置一个;“共享图书馆”;地点?
我正在开发环境中使用JBoss 4.2.2.GA应用服务器。我有一个WAR文件,Java 在JBoss中,我可以配置一个;“共享图书馆”;地点?,java,deployment,jboss,Java,Deployment,Jboss,我正在开发环境中使用JBoss 4.2.2.GA应用服务器。我有一个WAR文件,MyWar.WAR,还有一个JAR文件ExternalJar.JAR。这些文件的结构如下所示: 应用程序WAR文件: MyWar.war | |--- AppClass1.class | |--- AppClass2.class 外部jar文件(由客户端提供): ExternalClass需要使用AppClass1,AppClass2需要使用ExternalClass。当我在JBoss中部署WAR并将JAR
MyWar.WAR
,还有一个JAR文件ExternalJar.JAR
。这些文件的结构如下所示:
应用程序WAR文件:
MyWar.war
|
|--- AppClass1.class
|
|--- AppClass2.class
外部jar文件(由客户端提供):
ExternalClass需要使用AppClass1,AppClass2需要使用ExternalClass。当我在JBoss中部署WAR并将JAR放在JBoss的类路径中时,当我运行应用程序时,在实例化ExternalClass
时,我得到一个LinkageError。战争似乎看到了ExternalClass
,但ExternalClass
无法访问战争中的类
如果我手动将ExternalJar
放入WAR文件(WEB-INF/lib),它可以正常工作。但我们不希望修改归档文件以保持与生产部署的一致性
JBoss中是否有允许在应用程序的类路径中包含共享库文件夹的配置或设置?您可以通过执行以下操作禁用WAR文件类加载器隔离: 打开此文件
%JBOSS\u HOME%\server\\deploy\JBOSS web.deployer\META-INF\JBOSS service.xml
将此属性设置为true:
true
您应该能够将扩展JAR文件与WAR文件一起放在deploy/
目录中
如果使用相同的库加载多个WAR文件,则此设置可能会导致问题,因此可以像部署WAR一样部署jar文件。由于JBoss使用共享类加载器,因此您的jar将能够访问从war加载的类。您不能将jar捆绑在war中作为war构建逻辑的一部分,有什么特别的原因吗?这个jar将来自客户机,我们在创建war时不会有它。我们可以将war交给客户,让他创建jar。Jboss应该能够在运行时选择它。如上图所示,war和jar都应该能够看到对方。
ExternalJar.jar
|
|--- ExternalClass.class