目前系统webservice调用有两个报错
1. Can not set final com.sun.tools.internal.xjc.reader.internalizer.InternalizationLogic field com.sun.tools.internal.xjc.reader.internalizer.DOMForest.logic to org.apache.cxf.endpoint.dynamic.DynamicClientFactory
2. java.lang.RuntimeException: XPathFactory#newInstance() failed to create an XPathFactory for the default object model: http://java.sun.com/jaxp/xpath/dom with the XPathFactoryConfigurationException: javax.xml.xpath.XPathFactoryConfigurationException: No XPathFactory implementation found for the object model: http://java.sun.com/jaxp/xpath/dom
关于问题1
是由于cxf-api-2.7.8.jar中未导入对com.sun.tools.xjc.api的依赖导致加载的SchemaCompilerImpl 是系统tools中实现的,在后面设置值时不匹配报错.修改cxf-api-2.7.8.jar加入对com.sun.tools.xjc.api即不报错,貌似不影响正常使用,且cxf-api后续版本都没有加入此引用,故没处理.
关于问题2 是由于找不到XPathFactory的实现类,对于某些webservice可用,某些不可用是由于XPathFactory的类加载机制很特殊
(1) 在加载过程中(XPathFactoryFinder类中)首先以XPathFactory的类全名和默认的http://java.sun.com/jaxp/xpath/dom去SystemProperty中取,如果有就创建实例
(2) 没有的话就去java home中有没有jaxp.properties文件,如果有就根据这个文件去取
(3) 没有的话就去看META-INF/services是不是配置了Factory的实现类,如果有就根据这个取
(4) 没有的话就去创建默认的类实现,此类在rt.jar中。
(1) com.sun.tools.xjc.reader.internalizer. Internalizer初始化时需要
private static final XPathFactory xpf = XPathFactory.newInstance(); 这时会将默认的http://java.sun.com/jaxp/xpath/dom代入取factory,
(2) 取factory的XPathFactory的newInstance方法会使用 ClassLoader classLoader = ss.getContextClassLoader();
(3) getContextClassLoader中使用Thread.currentThread().getContextClassLoader();获取当前线程的类加载器
因为是获取的当前线程的加载器,在实际运行过程中发现有些是webAppClassLoader有些是BundleAwire形式,这些是可以加载到com.sun.org.apache.xpath.internal.jaxp.XPathFactoryImpl类的。而有些情况下是BundleDelegatingClassLoader(BundleDelegatingClassLoader for [glodon.gem.extend (glodon.gem.extend)]),这时是加载不到此类的。
由于是rt.jar中的类应该委托到bootstrap加载器,故只需将其配置到org.osgi.framework.bootdelegation中即可,
最后一个问题,为啥以前好使现在不好使了,是由于以前这里配置了,后来整理时被干掉了,因此这个webservice不好使了。
- 大小: 34 KB
- 大小: 6.4 KB
- 大小: 63.2 KB
分享到:
相关推荐
- cxf-codegen-plugin:Maven插件,用于自动执行wsdl2java任务。 - CXF的JAXB和XML绑定工具:用于处理数据序列化和反序列化。 总结,通过Apache CXF,我们可以轻松地在PC端和Android端之间建立Web Service通信,...
赠送jar包:cxf-rt-rs-client-3.0.1.jar; 赠送原API文档:cxf-rt-rs-client-3.0.1-javadoc.jar; 赠送源代码:cxf-rt-rs-client-3.0.1-sources.jar; 赠送Maven依赖信息文件:cxf-rt-rs-client-3.0.1.pom; 包含...
赠送jar包:cxf-rt-frontend-jaxws-3.0.1.jar; 赠送原API文档:cxf-rt-frontend-jaxws-3.0.1-javadoc.jar; 赠送源代码:cxf-rt-frontend-jaxws-3.0.1-sources.jar; 赠送Maven依赖信息文件:cxf-rt-frontend-jaxws...
赠送jar包:cxf-rt-frontend-simple-3.0.1.jar; 赠送原API文档:cxf-rt-frontend-simple-3.0.1-javadoc.jar; 赠送源代码:cxf-rt-frontend-simple-3.0.1-sources.jar; 赠送Maven依赖信息文件:cxf-rt-frontend-...
赠送jar包:cxf-rt-bindings-soap-3.0.1.jar; 赠送原API文档:cxf-rt-bindings-soap-3.0.1-javadoc.jar; 赠送源代码:cxf-rt-bindings-soap-3.0.1-sources.jar; 赠送Maven依赖信息文件:cxf-rt-bindings-soap-...
- 实现具体的调用逻辑,根据PC端提供的服务端点地址,通过代理类调用相应的服务方法。 3. **数据交换格式**: - SOAP(Simple Object Access Protocol)是Web Service常用的数据交换格式,使用XML编码消息,具有...
带详细解决方案说明文档,提供三种解决方式,另外包含stax2-api.jar,stax2-api-source.jar,woodstox-core-asl-4.4.1.jar,stax-ex.jar,wstx-asl-3.2.9.jar等jar文件,亲测有效。
本篇文章将详细介绍如何使用CXF和camel-cxf调用Web服务,以及这两个工具的核心功能和使用场景。 Apache CXF是一个全面的服务开发框架,它支持多种Web服务标准,如SOAP、WS-*协议栈、RESTful服务等。CXF提供了丰富的...
赠送jar包:cxf-rt-transports-http-3.0.1.jar; 赠送原API文档:cxf-rt-transports-http-3.0.1-javadoc.jar; 赠送源代码:cxf-rt-transports-http-3.0.1-sources.jar; 赠送Maven依赖信息文件:cxf-rt-transports-...
赠送jar包:cxf-rt-rs-extension-providers-3.0.1.jar; 赠送原API文档:cxf-rt-rs-extension-providers-3.0.1-javadoc.jar; 赠送源代码:cxf-rt-rs-extension-providers-3.0.1-sources.jar; 赠送Maven依赖信息...
赠送jar包:cxf-rt-databinding-jaxb-3.0.1.jar; 赠送原API文档:cxf-rt-databinding-jaxb-3.0.1-javadoc.jar; 赠送源代码:cxf-rt-databinding-jaxb-3.0.1-sources.jar; 赠送Maven依赖信息文件:cxf-rt-...
cxf-core-3.0.0.jar,cxf-rt-bindings-soap-3.0.0.jar,cxf-rt-databinding-jaxb-3.0.0.jar,cxf-rt-frontend-jaxws-3.0.0.jar,cxf-rt-frontend-simple-3.0.0.jar,cxf-rt-transports-http-3.0.0.jar,cxf-rt-...
结合标签“开源项目”,我们可以理解这两个压缩包都是开源社区的产物,遵循一定的开放源码许可证,允许开发者自由地使用、修改和分发。这体现了开源软件的协作精神和创新力量。 综上所述,"cxf-rt-transports-...
1. **WSDL First和Java First**:CXF支持两种开发模式,可以根据WSDL文档生成Java代码(WSDL First),也可以从Java类生成WSDL文档(Java First)。这为开发者提供了灵活性,可以根据项目需求选择合适的方法。 2. *...
cxf-rt-frontend-jaxws-3.0.16.jar jar包下载3.0.16版本下载
CXF入门教程(4) -- webService异步调用模式文章配套代码,文中涉及的异步调用客户端的代码放在com.neareast.test.cxf.asyClient包下。原文地址:http://blog.csdn.net/neareast/article/details/7726503
C#动态调用CXF WEBSERVICE框架共通类。
在本篇博文中,我们将深入探讨如何利用Apache CXF库创建一个基于Web Service的数据交互解决方案,特别是关注于PC端和Android端之间的本地通信。Apache CXF是一个开源框架,它允许开发者构建和部署SOAP(简单对象访问...