1.使用CXF开发web service
-加入cxf的jar包即可,其他不需要改动
a.创建一个java项目,把之前的jdk开发webservice服务端的代码复制进去,把cxf的jar复制到lib下面并build path,
注意cxf的lib下有一个不是jar包,不要选中
b.修改端口号并运行
c.运行jdk的websevice服务端
d.查看两者的wsdl文档
-首先查看8989,也就是我们的jdk的webservice服务端,它的schema约束是从外部引入的:
而我们的8888端口,cxf的webservice服务端wsdl文档,它的schema约束文件是内置的:
2.分析WebService的WSDL文档结构
大致可分为六个部分:
(1).<definitions>
(2).<types>
(3).<message>
(4).<portType>
(5).<binding>
(6).<service>
详细结构如下:
文档结构:
<definitions>
<types>
<schema>:引用了自己定义的一个约束
<element>
</types>
<message>:定义了请求响应消息的结构
<part>
</message>
<portType>:端口类型
<operation>
<input>
<output>
</portType>
<binding>:
<operation>
<input>
<output>
</binding>
<service>
</service>
</definitions>
3.使用cxf的wsdl2java去生成客户端代码
a.把cxf的bin目录加入到环境变量path中
b.以管理员身份运行cmd窗口,进入客户端项目src目录输入,wsdl2java命令加上你的服务端url(后缀加上?wsdl),或者你的本地wsdl文档位置即可生成客户端代码,控制台可能会报错,原因是有多余的包
c.编写cxf测试类,由wsdl文件的service标签得知,我们可以实例化name为HelloWsImplService的工厂类,只要通过
getHelloWsPort()即可获取其的方法,sayHello(String name)
d.下面我们使用eclipse内置web services explorer打开wsdl page查看我们的请求报文和响应报文
e.首先分析我们的8888端口号cxf的wsdl文档,根据其语法可以写如下标签:
f.sayHello标签用于请求,sayHelloResponse用于响应
g.message标签解析:
h.portType标签解析:
i:binding标签解析:
j:service标签解析: