Glassfish War部署Jar未加载

时间:2010-02-21 11:17:43

标签: java jar glassfish classpath axis2

我有一个非常讨厌的问题。

所以我想在我的java web应用程序(.war文件)中包含2个jar文件 - 在glassfish 2.1版上加载。

文件是:

axis2-adb-1.4.1.jarwstx-asl-3.2.4.jar

在我的控制台应用程序中,我只是将它们添加到我的类路径中,它们运行良好。但是,当我将其部署到glassfish(罐放在WEB-INF/lib/中)时,我得到了这个:

  

java.lang.reflect.InvocationTargetException

     

org.apache.axis2.AxisFault:   org.apache.axis2.databinding.ADBException:   无法调用getTypeObject   扩展映射器类中的方法

我注意到在我的控制台应用程序中,当我从类路径中删除wstx-asl-3.2.4.jar时,我会得到同样的错误。所以我的感觉是这个罐子没有加载一些。

然后我继续将罐子重新包装起来。我制作了这个大轴2 + wstx.jar并将其加载到我的glassfish项目中。同样的错误......它肯定是加载的,因为没有axis2 jar它会抛出一个axis2类而不是更早的def异常方式。

所以我的理论是,玻璃鱼懒洋洋地加载罐子,因为无论是axis2 jar还是我的主程序都不需要这个wstx jar,所以它没有正确加载。但我可能完全错了。

我真的希望有人可以帮我解决这个问题。

2 个答案:

答案 0 :(得分:4)

从GF v2 b49开始,Woodstox作为Glassfish的一部分与sjsxp一起集成,Woodstox in Glassfish v2仍然是默认的解析器。要启用Woodstox,请在服务器端设置以下系统属性:

-Djavax.xml.stream.XMLEventFactory=com.ctc.wstx.stax.WstxEventFactory
-Djavax.xml.stream.XMLInputFactory=com.ctc.wstx.stax.WstxInputFactory
-Djavax.xml.stream.XMLOutputFactory=com.ctc.wstx.stax.WstxOutputFactory

{{3}}中的更多详情。

如果使用集成的Woodstox不符合您的要求,则可以尝试通过在{{1}中设置sun-web.xml进行设置来激活delegate="false"文件中的“类加载委派功能”元素。这样的事情:

class-loader

答案 1 :(得分:0)

我认为两个罐子里都有同一个类。并且在某种程度上没有getTypeObject方法的类被加载为第一个。如果有机会在类路径中更改加载的jar的顺序,那将有所帮助。