我在进行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)
答案 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文件中。