webservice客户端异常( undefinedelement declaration 's:schema')
来源:互联网 发布:android 内存管理源码 编辑:程序博客网 时间:2024/06/07 17:08
原文地址:代码人生(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?
<element name="foo"> <complexType> <element ref="a:bar"/> </complexType> </element> <element name="bar"type="string"/>
equivalent to this:
[html] view plain copy print?
<element name="foo"> <complexType> <element name="bar"type="string"/> </complexType> </element>
当明白了ref的作用后,我很自然地就想到wsdl2java是通过JAXB解析wsdl文件的,那会不会是JAXB目前还不支持ref 这种元素的解析呢,从网上找到一篇文章 还是ORACLE官网上的“xsd:element ref not working with jaxb”似乎为我的想提供了佐证,在国外的一些文章上对待这样的错误有如下的解决办法:用替代 ,我试了下果然可以,因此我基本上可以个人武断地认为这个wsdl2java的生成错误应该是和JAXB不支持xml的ref有关。因为
和其实是等价的。其实就是说这里可以用s:schema规定的任意一种元素类型来替代,正是起到了这个作用。
只不过是把两个写成了一句罢了。
· 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,将出现
- webservice客户端异常( undefinedelement declaration 's:schema')
- webservice客户端异常( undefinedelement declaration 's:schema')
- 关于cxf 连.net 的webservice生成客户端异常( undefined element declaration 's:schema')
- webservice客户端 发生undefined element declaration 's:schema'
- xfire生成webservice客户端 发生xfire undefined element declaration 's:schema' 错误
- webservice生成客户端时提示解析组件 's:schema' 时出错原因
- WSDLToJava Error: Thrown by JAXB : undefined element declaration 's:schema'
- WSDLToJava Error: Thrown by JAXB : undefined element declaration 's:schema'
- XML(12) Schema declaration
- 生成webservice客户端出现的常见异常
- webservice 出错 解析组件 's:schema' 时出错。在该组件中检测到 's:schem
- webService学习之一(Schema)
- Webservice之schema
- Hive-异常处理Hive Schema version 2.3.0 does not match metastore's schema version 1.2.0 Metastore is not
- 使用cxf生成webservice客户端调用异常解决
- cxf-webservice客户端与服务端的注意事项及常见异常
- webService学习6:解析组件 's:schema' 时出错。在该组件中检测到 's:schem
- WebService客户端
- 升级android studio后eclipse的adb异常
- SQL注入工具
- Hibernate Tools 工具 for eclipse(详细步骤)
- 关于请求被挂起页面加载缓慢问题的追查
- 创建单链表的头插法和尾插法
- webservice客户端异常( undefinedelement declaration 's:schema')
- 面试问题总结
- sap ABAP 显示计时秒表 函数“SAPGUI_PROGRESS_INDICATOR”
- 9. Palindrome Number
- 工厂模式
- oj刷题—Problem B: C语言习题5.25--文件操作2
- __block/__weak/__bridge的用法说明
- 消息队列的两种模式
- C++ 个人整理