Java 如何强制jboss从webapp中的JAR加载类';s库

Java 如何强制jboss从webapp中的JAR加载类';s库,java,jakarta-ee,deployment,jboss,Java,Jakarta Ee,Deployment,Jboss,我正试图在jboss-6.0.0Final上部署我的web应用程序,该应用程序目前部署在apachetomcat上。 我有两个JAR,其中一个包含相同的包org.apache.axis。我将一个jar放在/server/default/lib中,另一个jar放在WEB-INF/lib中 需要将两个JAR都放在类路径中。无法移除其中一个罐子。所以我需要保留两个罐子它给了我以下的错误 java.lang.ClassCastException: org.apache.axis.attachments.

我正试图在
jboss-6.0.0Final
上部署我的web应用程序,该应用程序目前部署在
apachetomcat
上。 我有两个JAR,其中一个包含相同的包
org.apache.axis
。我将一个jar放在
/server/default/lib
中,另一个jar放在
WEB-INF/lib

需要将两个JAR都放在类路径中。无法移除其中一个罐子。所以我需要保留两个罐子它给了我以下的错误

java.lang.ClassCastException: org.apache.axis.attachments.AttachmentsImpl cannot be cast to org.apache.axis.attachments.Attachments
    at org.apache.axis.AxisFault.makeFault(AxisFault.java:101)
    at org.apache.axis.client.Call.invoke(Call.java:1828)
我认为这是由于两个不同罐子中的相同类冲突造成的

现在,我想知道如何强制jboss从/WEB-INF/lib中的axis.jar加载这个特定包的类

我该怎么做


这对我有帮助:


引爆你的战争,

在web inf目录中添加以下xml文件:jboss-classloading.xml
内容:
(域名是您的战争名称)


我将分享我遇到同样情况时遵循的非常简单直接的过程

1> 创建一个jboss web.xml文件

  <class-loading java2classloadingcompliance="false">
  <loader-repository>
      com.rts:archive=DTH_PROD.war
      <loader-repository-config>
          java2ParentDelegation=false
      </loader-repository-config>
  </loader-repository>
  </class-loading>
</jboss-web>


com.rts:archive=DTH_PROD.war
java2ParentDelegation=false
要点:

  • 以标记开始xml,该标记在我发布的代码中不可见 检查上述代码的第三行
  • com.rts-这是您的软件包名称
  • DTH\U产品战争-您希望保留的捆绑包名称
2> 现在将这个xml文件放到项目和voilla的WEB-INF目录中


更多详细信息,请参考。如果您在解决此问题时遇到任何困难,也请在下面进行评论。

为什么需要将罐子放在两个位置?想知道您是否能够隔离战争。我遇到了同样的问题,隔离似乎不起作用。这是针对JBOSS 5的,但在JBOSS EAP 6中。*+JBOSS使用的是模块依赖,所以这不起作用。我们使用的是JBOSS 4.2.0
  <class-loading java2classloadingcompliance="false">
  <loader-repository>
      com.rts:archive=DTH_PROD.war
      <loader-repository-config>
          java2ParentDelegation=false
      </loader-repository-config>
  </loader-repository>
  </class-loading>
</jboss-web>