LinkageError:使用resteasy在Websphere6.1中链接javax / xml / namespace / QName时违反了加载程序约束

时间:2008-12-11 19:35:32

标签: web-services websphere

我在进行Web服务调用时遇到此错误。我无法弄清楚这方面的工作。非常感谢您的帮助。

我的相关库是: 轴-1.3.jar
轴JAXRPC-1.3.jar
轴SAAJ-1.3.jar
axis-wsdl4j-1.5.1.jar

JAXB-API-2.1.jar JAXB的IMPL-2.1.8.jar Jaxen的-1.1-β-9.jar JAXRS-API-1.0-β-9.jar

在websphere 61中,管理员设置如下: 企业应用     - > WAR类加载器模式:PARENT_LAST  *网络模块:     - > ClassLoader模式:application_FIRST

引起:java.lang.LinkageError:链接javax / xml / namespace / QName类时违反了loader约束         在com.sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl。(RuntimeBuiltinLeafInfoImpl.java:224)         at com.sun.xml.bind.v2.model.impl.RuntimeTypeInfoSetImpl。(RuntimeTypeInfoSetImpl.java:61)         at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.createTypeInfoSet(RuntimeModelBuilder.java:127)         at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.createTypeInfoSet(RuntimeModelBuilder.java:79)         在com.sun.xml.bind.v2.model.impl.ModelBuilder。(ModelBuilder.java:152)         在com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder。(RuntimeModelBuilder.java:87)         at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:432)         在com.sun.xml.bind.v2.runtime.JAXBContextImpl。(JAXBContextImpl.java:297)         at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:139)         at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:117)         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)         在java.lang.reflect.Method.invoke(Method.java:585)         在javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:211)         在javax.xml.bind.ContextFinder.find(ContextFinder.java:372)         在javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:574)         在org.jboss.resteasy.plugins.providers.jaxb.JAXBContextWrapper。(JAXBContextWrapper.java:74)         在org.jboss.resteasy.plugins.providers.jaxb.JAXBContextWrapper。(JAXBContextWrapper.java:99)         at org.jboss.resteasy.plugins.providers.jaxb.XmlJAXBContextFinder.createContextObject(XmlJAXBContextFinder.java:48)         at org.jboss.resteasy.plugins.providers.jaxb.AbstractJAXBContextFinder.createContext(AbstractJAXBContextFinder.java:114)         at org.jboss.resteasy.plugins.providers.jaxb.XmlJAXBContextFinder.findCachedContext(XmlJAXBContextFinder.java:39)         at org.jboss.resteasy.plugins.providers.jaxb.AbstractJAXBProvider.findJAXBContext(AbstractJAXBProvider.java:49)         at org.jboss.resteasy.plugins.providers.jaxb.AbstractJAXBProvider.getMarshaller(AbstractJAXBProvider.java:112)         在org.jboss.resteasy.plugins.providers.jaxb.AbstractJAXBProvider.writeTo(AbstractJAXBProvider.java:88)         在org.jboss.resteasy.client.core.MessageBodyParameterMarshaller $ ClientRequestEntity。(MessageBodyParameterMarshaller.java:88)         在org.jboss.resteasy.client.core.MessageBodyParameterMarshaller.buildRequest(MessageBodyParameterMarshaller.java:51)         在org.jboss.resteasy.client.core.ClientInvoker.invoke(ClientInvoker.java:197)         在org.jboss.resteasy.client.core.ClientProxy.invoke(ClientProxy.java:46)         在$ Proxy51.updateAccount(未知来源)         在com.amg.brides.wedsimple.client.WedSimpleClientImpl.updateAccount(WedSimpleClientImpl.java:72)         在com.amg.brides.wedsimple.web.WedSimpleUpdateAccountEvent.invokeClient(WedSimpleUpdateAccountEvent.java:24)         在com.amg.brides.wedsimple.web.AbstractWedSimpleAccountEvent.execute(AbstractWedSimpleAccountEvent.java:35)         在com.amg.brides.util.WebEventProcessor.processEvents(WebEventProcessor.java:29)

2 个答案:

答案 0 :(得分:4)

基本问题是你从一个不正确的jar加载一个或多个与xml相关的类文件。您的应用程序服务器不允许您更改这些库,因为它已经从不同的实现中加载了大部分解析器。我试图检查jar文件的内容,寻找javax / xml / namespace但中途停止。如果你发现它很有可能你可以在没有违规课程的情况下获得一个。众所周知,人们会从外部罐子中手动删除这些文件。

您可以在容器运行时打开som vm选项来记录类加载。这是java -verbose:class选项。

对不起,我无法确定确切的问题;)

答案 1 :(得分:3)

可能的解决方案(为我工作)

在Websphere 7中,我遇到了与轴1.3和1.4相同的问题 我已解决从WEB_INF \ lib中的axis-jaxrpc-1.3.jar中删除QName.class

这是因为QName.class已存在于其他jar文件中。