Mule服务器上的类加载器问题

时间:2015-01-13 16:53:11

标签: spring mule spring-batch mule-studio

我在 mule服务器上运行我的应用程序。 Mule服务器有自己的罐子集,我在mule服务器上运行的应用程序也有几个罐子。在处理Spring批处理时,我发现JettisonMappedXmlDriver类存在于我的应用程序xstream jar以及mule server jar中。这个类在内部引用MappedXMLOutputFactory中的jettision jar类,这个类也在我的应用程序中,但有些我如何得到MappedXMLOutputFactory类的 classnotfound错误。这看起来像类加载器问题。

如果我在mule服务器中添加jettision jar,那么一切正常,但我不能在我的生产环境中添加这个jar。有些人可以告诉我如何强制从我的应用程序jettision jar文件加载该类。这对我来说很奇怪,因为 classloader 应该来自MappedXMLOutputFactory的{​​{1}}类来自我的应用程序文件夹,就像它正在为其他类做的那样。 如果有人发现这样的问题,请告诉我。

2 个答案:

答案 0 :(得分:1)

Mule应用程序类加载器是可配置的:http://www.mulesoft.org/documentation/display/current/Classloader+Control+in+Mule

因此,只需配置应用程序的类加载器,首先查看它在/lib中嵌入的JAR,然后再推迟到Mule System类加载器。

答案 1 :(得分:0)

如果在不同的jar中有相同类的多个版本,则会遇到此问题,尽管方法签名不同。 ClassNotFound错误通常不是唯一发生的异常,在此之前您经常会看到另一个异常,通常是" NoSuchMethodException"这迫使类加载器卸载有问题的类。

我建议使用maven或gradle来组装你的应用程序,然后使用dependency:tree target来查询版本冲突。