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>