如何强制jboss从webapp的lib中的jar加载类

时间:2011-02-09 16:06:56

标签: java java-ee deployment jboss

我正在尝试在jboss-6.0.0Final上部署我的Web应用程序,该应用程序当前部署在apache tomcat上。 我有两个罐子,其中包含org.apache.axis相同的包装。我在<Jboss-home>/server/default/lib&amp; <my-app-war>WEB-INF/lib中的另一个jar。

需要将两个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加载这个特定包的类。

我该怎么做?

2 个答案:

答案 0 :(得分:0)

这帮助了我:
http://www.mastertheboss.com/jboss-configuration/solving-jboss-5-classloading-issues

爆炸你的战争,

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

 <classloading xmlns="urn:jboss:classloading:1.0"
            name="mywar.war"
            domain="mywar_domain"  <!-- (domain is your war name) -->
            parent-domain="Ignored"
            export-all="NON_EMPTY"
            import-all="true">
</classloading>

答案 1 :(得分:0)

当我遇到同样的情况时,我会分享一个非常简单直接的过程。

1&GT;创建 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>

<强>点数:

  • 使用标记开始xml,该标记在我发布的代码中不可见 检查上面代码的第3行,
  • com.rts - 这是您的包名。
  • DTH_PROD.war - 您希望保留的套件名称

2 - ;现在将此xml文件放入项目的WEB-INF目录中,然后发送!!

您还可以参考this article了解详细信息。如果您在解决此问题时遇到任何困难,请在下方发表评论。