文档章节

webservice客户端异常( undefinedelement declaration 's:schema')

M
 MackCC_Sun
发布于 2016/09/07 09:48
字数 823
阅读 11
收藏 0

原文地址:代码人生(http://wensiqun.iteye.com/blog/1083340)

 

今天在使用CXF的wsdl2java.bat根据wsdl文件生成客户端调用时出现以下错误: WSDL To Java Error: Thrown by JAXB: undefined element declaration's:schema' at line 49 column 19 of schemafile:/D:/workspace/webservice/weather/wsdl/weather.wsdl 

因为也是临时接触CXF,所以一时不知是什么问题,在网上搜了半天,都是说要替换什么内容之类的,但也没说为什么,而且基本都是转载国外某人的一个文章,只知其然不知其所以然就失去了做技术工作的意义了,因为长此这样是不可能提升自己的。所以决心了解下为什么? 

根据错误提示似乎是找不到s:schema,查看了一下.net生成的wsdl文件,在文件头部有s:schema命名空间的定义: 

xmlns:s=http://www.w3.org/2001/XMLSchema 

但同时也发现CXF生成的wsdl文件也用到了类似的元素,只不过定义的命名空间名称略有差异:xmlns:xs=http://www.w3.org/2001/XMLSchema 

因此基本可以排除找不到s:schema元素的问题原因肯定不是XML本身定义的问题了。

紧接着又看了下wsdl的引入是否会存在版本问题,在对比了JAVA和.NET的WSDL文件后,感觉版本也应该是一致的。因此wsdl的版本原因也可以排除。

http://schemas.xmlsoap.org/wsdl/ (java) 

http://schemas.xmlsoap.org/wsdl/soap/(.net) 

经过思考,决定从“在一个xml配置文件中ref表示什么意思“这个思路入手。查了一篇老外的文章后,大致明白了其作,ref相当于一个引用的意思,具体可见如下例子: 

 

[html] view plain copy

print?

  1. <element name="foo">   
  2. <complexType>   
  3. <element ref="a:bar"/>   
  4. </complexType>   
  5. </element>   
  6. <element name="bar"type="string"/>   

equivalent to this: [html] view plain copy

print?

  1. <element name="foo">   
  2. <complexType>   
  3. <element name="bar"type="string"/>   
  4. </complexType>   
  5. </element>   


当明白了ref的作用后,我很自然地就想到wsdl2java是通过JAXB解析wsdl文件的,那会不会是JAXB目前还不支持ref 这种元素的解析呢,从网上找到一篇文章 还是ORACLE官网上的“xsd:element ref not working with jaxb”似乎为我的想提供了佐证,在国外的一些文章上对待这样的错误有如下的解决办法:用<s:any minOccurs="2" maxOccurs="2"/>替代<s:element ref="s:schema"/><s:any /> ,我试了下果然可以,因此我基本上可以个人武断地认为这个wsdl2java的生成错误应该是和JAXB不支持xml的ref有关。因为

<s:any minOccurs="2"maxOccurs="2"/>和<s:element ref="s:schema" /><s:any />其实是等价的。<s:element ref="s:schema"/>其实就是说这里可以用s:schema规定的任意一种元素类型来替代,<s:any />正是起到了这个作用。 

<s:any minOccurs="2"maxOccurs="2"/>只不过是把两个<s:any />写成了一句罢了。

·        2011-06-13 11:17

评论

5楼 jiabo121 2012-10-19  

对于:http://www.webxml.com.cn/zh_cn/web_services.aspx网站提供的web服务是用.net生成的wsdl 如果使用Java调用, (如天气预报服务) 

解决方式: 

http://www.webxml.com.cn/WebServices /WeatherWebService?wsdl 另存为 WeatherWebService.wsdl于wsdl2java相同目录下;打开 WeatherWebService.wsdl,将出现 <s:elementref="s:schema" />的地方全部删除;然后再\bin>wsdl2javaWeatherWebService.wsdl 即可

本文转载自:http://blog.csdn.net/binbinxyz/article/details/8906717

共有 人打赏支持
M
粉丝 4
博文 158
码字总数 29095
作品 0
朝阳
技术主管
私信 提问
Java调用net的webservice故障排除实战分享

前几天公司要接入国外公司的一个业务功能,对方是提供的net产生的webservice,阿堂在用cxf的wsdl2java命令生成客户端的测试代码时,出现了如下故障 WSDLToJava Error: Thrown by JAXB: unde...

吕兵阳
2015/10/01
103
0
实战CXF调用Webxml天气预报服务

实战CXF调用Webxml天气预报服务 今晚群里的kasasis同学问我会不会使用CXF调用 http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl 这个天气预报的WebService服务; 我也是初学...

bayer
2012/04/06
0
3
实战CXF调用Webxml天气预报服务

http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl 这个天气预报的WebService服务; 我也是初学者, 在尝试调用的过程中发现不少问题, 也有一些小心得, 希望与大家分享, 更希...

squanchao
2016/09/07
18
0
CXF生成webservice客户端 发生undefined element declaration

CXF生成webservice客户端 发生undefined element declaration 's:schema' 今天在使用CXF的wsdl2java 根据wsdl文件生成客户端调用时出现以下错误: 因为也是临时接触CXF,所以一时不知是什么问...

The-Start
2014/02/14
0
0
webservise invoke Exception

@foxbrother 你好,想跟你请教个问题: 客户端调用cxf webservice出现异常 2012-9-13 10:53:43 org.apache.cxf.phase.PhaseInterceptorChain doDefaultLogging 警告: Interceptor...

Apache_007
2012/09/13
1K
3

没有更多内容

加载失败,请刷新页面

加载更多

C++ vector和list的区别

1.vector数据结构 vector和数组类似,拥有一段连续的内存空间,并且起始地址不变。 因此能高效的进行随机存取,时间复杂度为o(1); 但因为内存空间是连续的,所以在进行插入和删除操作时,会造...

shzwork
今天
3
0
Spring之invokeBeanFactoryPostProcessors详解

Spring的refresh的invokeBeanFactoryPostProcessors,就是调用所有注册的、原始的BeanFactoryPostProcessor。 相关源码 public static void invokeBeanFactoryPostProcessors(Configu......

cregu
昨天
4
0
ibmcom/db2express-c_docker官方使用文档

(DEPRECIATED) Please check DB2 Developer-C Edition for the replacement. What is IBM DB2 Express-C ? ``IBM DB2 Express-C``` is the no-charge community edition of DB2 server, a si......

BG2KNT
昨天
3
0
Ubuntu 18.04.2 LTS nvidia-docker2 : 依赖: docker-ce (= 5:18.09.0~3-0~ubuntu-bionic)

平台:Ubuntu 18.04.2 LTS nvidia-docker2 版本:2.0.3 错误描述:在安装nvidia-docker2的时候报dpkg依赖错误 nvidia-docker2 : 依赖: docker-ce (= 5:18.09.0~3-0~ubuntu-bionic) 先看一下依......

Pulsar-V
昨天
4
0
学习笔记1-goland结构体(struct)

写在前面:若有侵权,请发邮件by.su@qq.com告知。 转载者告知:如果本文被转载,但凡涉及到侵权相关事宜,转载者需负责。请知悉! 本文永久更新地址:https://my.oschina.net/bysu/blog/3036...

不最醉不龟归
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部