前一段时间,公司项目业务,需要通过提供Soap接口给第三方调用,由于接口较多,通过手写wsdl以及相关工具,都感觉不是那么如意,于是决定通过代码来生成WSDL。
(在这 里提醒大家,搞websevice接口项目,一般第一步都是WSDL的定制;然后才用响应的服务端与客服端代码)
由于项目紧,工具写的比较粗糙而且是为我们项目定制的,用的时候请确定你的需求,下面我开始介绍工具的使用:
1.根据自己的需求填写适合自己的wsdl规则(wsdl_rule.xls里面包括:type与interface的定义):
(这个例子的excel我放在工程的根目录的resource下)
(1)type表格这个就是wsdl的类型定义,类似于javaBean的定义VO(每个接口的参数),第一个圈里的是每个JavaBean对象名字,每个名字下面是它包含的属性(默认都是字符串类型)。
(2)例子里面得type定义只是一般情况的配置,属性也支持复数以及以及引用另一个javabean对象,eg:
a. 在User1加一个useList属性:userList:User*表示:userList属性是一个复数,而且里面的每个元素类型是User对象。
b. 在User加一个emailList属性:emailList*表示:属性是一个复数,而且里面的每个元素类型是String对象。
(1)Interface Name列是接口的名称,Request列是对应的接口请求参数,Respose列是对应的接口的请求参数。
(2)关于Request请求参数:可以是单个的参数,用' ,'号分隔;也可以是对象(在这里只需要把前面定义对象的名字,写在这里就可以了)。
(3)关于Response响应参数:可以返回是单个的参数,用' ,'号分隔;也可以返回是对象以及对象复数(在这里只需要把前面定义对象的名字,写在这里就可以了以及后面加*)。
注意:Excel解析的时候,帮边最好加几个空格,防止解析的时候报错。
2.根据上面定义的excel规则生成wsdl:(工具见附件,为源码,填好参数执行main函数就可以)
下面是org.main包下面得WsdlService.java文件
被注释的代码是根据wsdl生成服务端以及客户端的代码。
3.下面是消息请求头以及响应头在代码中的位置,默认已经被注释,如果需要可以打开注视:
(1)请求消息头:
(2)响应消息头:
注意:源码工程里的Axis2Jar包已经删除,请自己添加。
本来有个界面工具的,感觉不是太好,就自己上源码了,根据需求大家可以修改;在generatesoap包里面,是通过代码自动构造的服务端的Skeleton类,有兴趣可以看一下。
体会:能够工作的工具,胜过全面细致的文档。