博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于cxf 连.net 的webservice生成客户端异常( undefined eleme...
阅读量:6313 次
发布时间:2019-06-22

本文共 1427 字,大约阅读时间需要 4 分钟。

hot3.png

今天在使用CXF的wsdl2java.bat 根据wsdl文件生成客户端调用时出现以下错误:

因为也是临时接触CXF,所以一时不知是什么问题,在网上搜了半天,都是说要替换什么内容之类的,但也没说为什么,而且基本都是转载国外某人的一个文章,所以决心了解下为什么?

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

xmlns:s=

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

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

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

(java)

(.net)

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

复制代码
<
element
name
="foo"
>
<
complexType
>
<
element
ref
="a:bar"
/>
</
complexType
>
</
element
>
<
element
name
="bar"
type
="string"
/>
equivalent to this:
<
element
name
="foo"
>
<
complexType
>
<
element
name
="bar"
type
="string"
/>
</
complexType
>
</
element
>
复制代码

当明白了ref的作用后,我很自然地就想到wsdl2java是通过JAXB解析wsdl文件的,那会不会是JAXB目前还不支持ref 这种元素的解析呢,从网上找到一篇文章 还是ORACLE官网上的似乎为我的想提供了佐证,在国外的一些文章上对待这样的错误有如下的解决办法:用<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 />写成了一句罢了。

 

此外,再附带记录另一个问题。

wsdl2java -p com.test.orderservice OrderService1.wsdl 一个文件时出现下列错误:

这个错误是由于有一行类似这样<wsdl:part name="Body" />  缺少 type="s:string"  造成的

转载于:https://my.oschina.net/ankecheng/blog/68956

你可能感兴趣的文章
Java socket示例(demo)TCP/IP
查看>>
kafka server.properties配置文件详解
查看>>
scrapy爬虫学习系列三:scrapy部署到scrapyhub上
查看>>
Mybatis 子查询
查看>>
centos 和 radhat 配置epel仓库
查看>>
jsp页面制作弹出框
查看>>
Django--ORM操作
查看>>
2018.10.29安装tensorflow
查看>>
input chrome下输入之后背景变为黄色的解决办法
查看>>
MySQL数据库的安装教程及相关问题
查看>>
MHDD检测电脑硬盘坏道
查看>>
PHP变量在内存中的存储方式
查看>>
Jupyter Notebook中让python2和python3内核共存
查看>>
pandas.read_csv() 报错 OSError: Initializing from file failed,报错原因分析和解决方法
查看>>
用例图简介(转)
查看>>
算法思想(一)理解复杂度
查看>>
MongoDB之安装部署
查看>>
准备工作——画具篇
查看>>
手动实现jQuery Tools里面tab功能
查看>>
用JAVA写的一个十进制转换任意进制数的程序
查看>>