1

进行 Web 服务调用时出现此错误。我想不出一个解决方法。任何帮助是极大的赞赏。

我拥有的相关库是:axis-1.3.jar
axis-jaxrpc-1.3.jar
axis-saaj-1.3.jar
axis-wsdl4j-1.5.1.jar

jaxb-api-2.1.jar jaxb-impl-2.1.8.jar jaxen-1.1-beta-9.jar jaxrs-api-1.0-beta-9.jar

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

原因:java.lang.LinkageError:在 com.sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl.(RuntimeBuiltinLeafInfoImpl.java:224) 处链接 javax/xml/namespace/QName 类时违反了加载程序约束。 .xml.bind.v2.model.impl.RuntimeTypeInfoSetImpl.(RuntimeTypeInfoSetImpl.java:61) 在 com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.createTypeInfoSet(RuntimeModelBuilder.java:127) 在 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) 在 com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:432) 在 com.sun.xml.bind。 v2.runtime.JAXBContextImpl。(JAXBContextImpl.java:297) 在 com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:139) 在 com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:117) 在sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在 java.lang.reflect.Method。在 javax.xml.bind.ContextFinder.find(ContextFinder.java:372) 在 javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:211) 在 javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:211) 调用(Method.java:585) .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) 在 org.jboss.resteasy.plugins.providers.jaxb.XmlJAXBContextFinder.findCachedContext(XmlJAXBContextFinder.java:39) 在 org.jboss.resteasy.plugins.providers.jaxb.AbstractJAXBProvider .findJAXBContext(AbstractJAXBProvider.java:49) at org.jboss.resteasy.plugins.providers.jaxb.AbstractJAXBProvider.getMarshaller(AbstractJAXBProvider.java:112) at org.jboss.resteasy.plugins.providers.jaxb.AbstractJAXBProvider.writeTo(AbstractJAXBProvider .java:88) 在 org.jboss.resteasy.client.core。MessageBodyParameterMarshaller$ClientRequestEntity.(MessageBodyParameterMarshaller.java:88) at org.jboss.resteasy.client.core.MessageBodyParameterMarshaller.buildRequest(MessageBodyParameterMarshaller.java:51) at org.jboss.resteasy.client.core.ClientInvoker.invoke(ClientInvoker.java :197) at org.jboss.resteasy.client.core.ClientProxy.invoke(ClientProxy.java:46) at $Proxy51.updateAccount(Unknown Source) at com.amg.brides.wedsimple.client.WedSimpleClientImpl.updateAccount(WedSimpleClientImpl. java:72) 在 com.amg.brides.wedsimple.web.AbstractWedSimpleAccountEvent.execute(AbstractWedSimpleAccountEvent.java:35) 在 com.amg.com.amg.brides.wedsimple.web.WedSimpleUpdateAccountEvent.invokeClient(WedSimpleUpdateAccountEvent.java:24) .brides.util.WebEventProcessor.processEvents(WebEventProcessor.爪哇:29)

4

2 回答 2

6

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

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

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

于 2008-12-11T20:23:01.577 回答
4

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

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

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

于 2014-11-12T10:50:46.813 回答