利用wsgen工具产生WSDL文档

wsgen工具还可以用来从一个web服务中生成对应的WSDL文档。如下面这个示例命令:

% wsgen -cp . -wsdl ch03.ts.HelloWordImpl

注意,ch03.ts.HelloWordImpl是SIB,也就是服务的实现类。我们再来看看生成的WSDL文档:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- Generated by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.2.4-b01. -->
<definitions targetNamespace="http://ts.ch03/" name="HelloWordImplService" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:wsp="http://www.w3.org/ns/ws-policy" xmlns:tns="http://ts.ch03/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
  <types>
    <xsd:schema>
      <xsd:import namespace="http://ts.ch03/" schemaLocation="HelloWordImplService_schema1.xsd"/>
    </xsd:schema>
  </types>
  <message name="sayHello">
    <part name="parameters" element="tns:sayHello"/>
  </message>
  <message name="sayHelloResponse">
    <part name="parameters" element="tns:sayHelloResponse"/>
  </message>
  <portType name="HelloWord">
    <operation name="sayHello">
      <input wsam:Action="http://ts.ch03/HelloWord/sayHelloRequest" message="tns:sayHello"/>
      <output wsam:Action="http://ts.ch03/HelloWord/sayHelloResponse" message="tns:sayHelloResponse"/>
    </operation>
  </portType>
  <binding name="HelloWordImplPortBinding" type="tns:HelloWord">
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
    <operation name="sayHello">
      <soap:operation soapAction=""/>
      <input>
        <soap:body use="literal"/>
      </input>
      <output>
        <soap:body use="literal"/>
      </output>
    </operation>
  </binding>
  <service name="HelloWordImplService">
    <port name="HelloWordImplPort" binding="tns:HelloWordImplPortBinding">
      <soap:address location="REPLACE_WITH_ACTUAL_URL"/>
    </port>
  </service>
</definitions>

利用wsgen工具产生的WSDL文档和直接从web服务发布的运行时环境中获取的WSDL文档相比,有一个比较明显的区别:wsgen产生的WSDL文档中没有真正包括服务实际发布环境中的服务端点URL。下面是wsgen生成的WSDL文档的部分内容:

......
<service name="HelloWordImplService">
    <port name="HelloWordImplPort" binding="tns:HelloWordImplPortBinding">
      <soap:address location="REPLACE_WITH_ACTUAL_URL"/>
    </port>
</service>
......

注意这里:<soap:address location="REPLACE_WITH_ACTUAL_URL"/>,使用时,只要用真实的服务端点URL替换红色文字部分即可。除了这点差别之外,通过这两种情况下获取的WSDL文档是相同的。

你可能感兴趣的:(java-web服务)