在JBoss EAP 6.1中,有一个文件
JBOSS/bin/client/jboss-client.jar
它包含Web应用程序所需的所有客户端类。但是,当我们安装WAR文件时,它没有看到这些类可用。
要解决此问题,我们已在war文件WEB-INF/lib
文件夹中包含此JAR的副本。这些副本是浪费,但更重要的是,这意味着我们必须为我们要安装的每个应用服务器提供不同的WAR文件。
是否有一个技巧允许WAR文件中的应用程序加载和使用此库中的类,而不必将其复制到应用程序的WEB-INF/lib
文件夹中?或者,是否有一个地方我们可以复制这个jar,以便它可供所有WAR应用程序使用?
答案 0 :(得分:1)
解决方案是将名为jboss-deployment-structure.xml
的文件放在WEB-INF文件夹中。该文件的内容是:
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
<deployment>
<!-- Excluding conflicting JBoss-6 Implicit Modules so that jars bundled within war file is used. -->
<exclusions>
<module name="org.apache.log4j" />
<module name="org.apache.commons.logging" />
</exclusions>
<!-- Defining additional dependencies for JMS usage in model API -->
<dependencies>
<module name="org.jboss.remote-naming" />
<module name="org.hornetq" />
</dependencies>
</deployment>
</jboss-deployment-structure>
这使我们可以使用JBoss的JMS类,而无需安装应用程序附带的客户端库副本。似乎前段时间,程序员将应用程序移植到JBoss,并遇到了一个问题,即解决了问题。 (黑客入侵)将客户端库放入其中,但这是一个更好的解决方案。
答案 1 :(得分:0)