根据wsdl生成服务端代码

场景描述

最近在和一家公司做业务接口对接,由他们那边回调我们这边,对方直接扔过来一个webservice的wsdl文件,让我们按照他们的规范来做webservice服务,
大多数的对接应该是我们创建完服务端的webservice服务,让其他公司根据我们的wsdl文件去开发客户端,但是,大公司就是这样,必须要按照他们的规范来。
那问题来了,怎么根据wsdl文件创建服务端呢?

查看wsdl文件的顺序是从下往上

请大家铭记查看wsdl文件的顺序是从下往上看的,不然,你会看懵逼的。

第一步:确定接口的名称

service节点上的name属性值就是这个接口类的名称;

也就是说如果你要根据wsdl文件创建服务端的话就需要你去创建一个名字为:IHelloWord的接口。

第二步:确定接口中都有哪些方法以及方法的名称

找binding节点下的operation子节点中的name属性值

一个operation节点就代码一个方法,也就是在接口中声明几个方法。

第三步:确定接口中方法的参数类型,顺序

假设我要找sayHello方法的参数类型和顺序;

1:找出binding节点对应的porttype节点

2:找出porttype中每一个operation中的input和output对应的message

3:找到message中对应


从上面圈住的部分可以看出来:
sayHello方法有两个参数,第一个参数的类型为String,第二个参数的类型为int。
可以对比一下接口中的方法:

第四步:找出这个服务类中方法的返回值类型

1:找出这个方法所在的porttype节点

2:找出这个porttype中operation中的output指向的message节点

3:找到tyeps节点下name属性值为sayHelloResponse的element节点


从上图中圈住的部分就可以看出,这个返回值为String类。
对比java代码;

第五步:确定对外提供服务的url地址

service中的address节点中有一个location的地址就是对外提供调用的地址

这里的url的第一级目录和二级目录会影响我们的配置;
一级目录影响的是:web.xml中监听器的匹配规则

二级目录影响的是:注册webservice服务的时候指定的名称

posted @ 2016-08-16 19:17  王森  阅读(...)  评论(...编辑  收藏