使用 CXF 构建WebService中的问题分享

CXF成为java构建Webservice的首选。虽然很简单,但是由于历史原因,还是有不少问题。

首先,因为版本问题,在3.0以后的版本,

<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml"/>

这一句可以删掉了。因为无法找到了,不需要了。

其次,在使用 <jaxws:server> 还是 <jaxws:endpoint> 发布服务的问题也可以不用考虑了,这基本都是一样的。

最后是个比较郁闷了很久的问题,那就是发布服务后,通过 http://localhost/context/foo?wsdl 查看wsdl时发现,具体的参数没有被wsdl描述,只是放了一句 <soap:body use="literal"/> ,让人摸不着头脑。什么WebParam都用上了也没能解决,最后找到原因,要加上 targetNamespace ! (接口,实现都要加)例如 

@WebService(targetNamespace="http://app.company.com")

然后问题解决了。

<xs:complexType name="test">
<xs:sequence>
<xs:element minOccurs="0" name="id" type="xs:string"/>
<xs:element minOccurs="0" name="type" type="xs:string"/>
<xs:element minOccurs="0" name="name" type="xs:string"/>
</xs:sequence>
</xs:complexType>
这样看起来好多了。CXF 暴露接口的具体参数名称类型的问题,就此解决了。
目前就这么多问题,记下来以便后来人搜索翻阅。

猜你喜欢

转载自airu.iteye.com/blog/2190971
今日推荐