通过IDEA对WSDL进⾏WebService⽣成客户端代码Table of Contents
1、WSDL详解
这个⽂档是花50分下载的,希望有所帮助。了解WSDL中需要使⽤到的参数。
<?xml version='1.0' encoding='UTF-8'?>
<!--这⾥的name是发布的service类名 + "Service", targetNamespace 是取决于发布类所在的包 -->
<wsdl:definitions name="HelloWorldImplService" targetNamespace="test/">
<!--types 的作⽤是定义输⼊输出参数都是什么样⼦的(类型) -->
<wsdl:types >
<xs:schema elementFormDefault="unqualified" targetNamespace="test/" version="1.0">
<!--输⼊参数名字为‘sayHello’,类型是复杂类型‘sayHello’,在下⾯定义 -->
<xs:element name="sayHello" type="tns:sayHello"/>
<!--输出参数名字为‘sayHelloResponse’,类型是复杂类型sayHelloResponse, 在下⾯定义-->
<xs:element name="sayHelloResponse" type="tns:sayHelloResponse"/>
<!--输⼊参数类型的具体定义:包含⼀个element,名字为arg0,类型为string-->
<xs:complexType name="sayHello">
<!-- 这⾥的name 是⾃动⽣成的。当然,也可以在代码中指定名字。
public @WebResult(name="sayHelloResult") String sayHello(@WebParam(name="name") String str)
-->
<xs:sequence>
如何生成webservice客户端
<xs:element minOccurs="0" name="arg0" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="sayHelloResponse">
<xs:sequence>
<xs:element minOccurs="0" name="return" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:schema>
</wsdl:types>
<!--这个message代表输⼊信息。这个输⼊信息的类型是sayHello,在<types>中定义过  -->
<wsdl:message name="sayHello">
<wsdl:part element="tns:sayHello" name="parameters"></wsdl:part>
</wsdl:message>
<!--这个message代表输出信息。这个输出信息的类型是sayHelloResponse,在<types>中定义过 -->
<wsdl:message name="sayHelloResponse">
<wsdl:part element="tns:sayHelloResponse" name="parameters">
</wsdl:part>
</wsdl:message>
<!--portType 就是我们定义的接⼝。⼀个接⼝对应⼀个port -->
<wsdl:portType name="HelloWorld">
<!--这⾥的⼀个operation就是接⼝中的⼀个⽅法 -->
<wsdl:operation name="sayHello">
<wsdl:input message="tns:sayHello" name="sayHello">
</wsdl:input>
<wsdl:output message="tns:sayHelloResponse" name="sayHelloResponse">
</wsdl:output>
</wsdl:operation>
</wsdl:portType>
<!--把接⼝进⾏ soap 绑定-->
<wsdl:binding name="HelloWorldImplServiceSoapBinding" type="tns:HelloWorld">
<!-- 这⾥指明绑定的协议为 http,style为document-->
<soap:binding transport="/soap/http"/>
<!-- 具体⽅法的绑定类型定义-->
<wsdl:operation name="sayHello">
<soap:operation soapAction="" />
<wsdl:input name="sayHello">
<!--literal⽂本  -->
<!--literal⽂本  -->
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="sayHelloResponse">
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<!--把n个接⼝放到⼀起,总称为⼀个service -->
<wsdl:service name="HelloWorldImplService">
<!--这⾥⼀个port就是⼀个接⼝。对应的绑定刚刚定义过  -->
<wsdl:port binding="tns:HelloWorldImplServiceSoapBinding" name="HelloWorldImplPort">      <!--这个接⼝的地址  -->
<soap:address location="localhost:8080/HelloWorld" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
2、IDEA中进⾏WebService客户端⽣成
可以新建⼀个普通项⽬
创建⼀个简单的 hello world 项⽬
接下来是要进⾏客户端⽣成。
会弹出⼀个窗⼝
你要填⼊你要解析的 wsdl路径、输出路径、存放的解析内容的包的前缀(路径)、以及 web Service Platform。
“Web ServicePlatform是⼀个协议解析⼯具,这个可以根据⾃⼰的了解与需求⾃⾏选择。选择不同的协议解析⼯具⽣成的Java代码会不⼀样,调⽤的函数也会有差别,但是其根本原理是⼤同⼩异。”--------使⽤IDEA根据wsdl⽣成WebServices客户端代码
我是⽤ JWSDP 2.2 这列的。
报红是因为当前项⽬中没有这个包名。点击OK创建后即可⾃动⽣成。
可以看到⽣成相关的服务。这个时候就可以进⾏客户端测试了。
ExchangeService exchangeService = new ExchangeService();
Exchange exchangePort = ExchangePort();
String exchange = hange("your param");
System.out.println(exchange);

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。