はじめに
* WSDL を 作成する方法として、以下が考えられる。 [1] 自分でTextEditorなどで、新規にWSDLファイルを作成する [2] ツール(例えば、EclipseのWSDLエディタ)で作成する [3] Axis2(Java2WSDL)を使って、Javaソースを基にWSDLファイルを自動作成する 今回は、[3]の方法を試してみる。
■ Axis2(Java2WSDL)を使って、Javaソースを基にWSDLファイルを自動作成する
前提条件
* 以下のように環境を設定しておくhttp://blogs.yahoo.co.jp/dk521123/31944955.html
作成例
作成手順
$AXIS2_HOME + bin + java2wsdl.bat + src + com + HelloWorldBean.java + IHelloWorldService.java
サンプルソース「HelloWorldBean.java」
package com; /** * HelloWorldServiceサービス用データクラス */ public final class HelloWorldBean { /** メッセージ */ private String message; /** * メッセージを取得 * @return メッセージ */ public String getMessage() { return this.message; } /** * メッセージを設定 * @param message メッセージ */ public void setMessage(String message) { this.message = message; } }
サンプルソース「IHelloWorldService.java」
package com; import com.HelloWorldBean; /** * HelloWorldServiceインタフェース */ public interface IHelloWorldService { /** * HelloWorldServiceサービス * @param inputBean 要求メッセージ * @return 応答メッセージ */ public HelloWorldBean sayHello(HelloWorldBean inputBean); }
作成手順
[1] コンパイルをする ~~~ javac -cp src src\com\IHelloWorldService.java ~~~ [2] コンパイルしたclassファイルからWSDLファイルを生成する ~~~ java2wsdl -cp src -cn com.IHelloWorldService -sn HelloWorldService -of HelloWorld.wsdl ~~~ 【オプションの説明】 * -cp クラスパス * -cn インタフェースclassのフルパス * -sn サービス名 * -of 出力ファイル名 * 他のオプションについては、以下の関連記事を参照のことhttp://blogs.yahoo.co.jp/dk521123/33842530.html
出力結果
* これを手書きで書くのは大変だなー<?xml version="1.0" encoding="UTF-8"?> <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:ns="http://com" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ax21="http://com/xsd" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:ns1="http://org.apache.axis2/xsd" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" targetNamespace="">http://com"> <wsdl:types> <xs:schema xmlns:ax22="http://com/xsd" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="">http://com"> <xs:import namespace="">http://com/xsd"/> <xs:element name="sayHello"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" name="args0" nillable="true" type="ax22:HelloWorldBean"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="sayHelloResponse"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" name="return" nillable="true" type="ax22:HelloWorldBean"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> <xs:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="">http://com/xsd"> <xs:complexType name="HelloWorldBean"> <xs:sequence> <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:schema> </wsdl:types> <wsdl:message name="sayHelloRequest"> <wsdl:part name="parameters" element="ns:sayHello"/> </wsdl:message> <wsdl:message name="sayHelloResponse"> <wsdl:part name="parameters" element="ns:sayHelloResponse"/> </wsdl:message> <wsdl:portType name="HelloWorldServicePortType"> <wsdl:operation name="sayHello"> <wsdl:input message="ns:sayHelloRequest" wsaw:Action="urn:sayHello"/> <wsdl:output message="ns:sayHelloResponse" wsaw:Action="urn:sayHelloResponse"/> </wsdl:operation> </wsdl:portType> <wsdl:binding name="HelloWorldServiceSoap11Binding" type="ns:HelloWorldServicePortType"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/> <wsdl:operation name="sayHello"> <soap:operation soapAction="urn:sayHello" style="document"/> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:binding name="HelloWorldServiceSoap12Binding" type="ns:HelloWorldServicePortType"> <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/> <wsdl:operation name="sayHello"> <soap12:operation soapAction="urn:sayHello" style="document"/> <wsdl:input> <soap12:body use="literal"/> </wsdl:input> <wsdl:output> <soap12:body use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:binding name="HelloWorldServiceHttpBinding" type="ns:HelloWorldServicePortType"> <http:binding verb="POST"/> <wsdl:operation name="sayHello"> <http:operation location="sayHello"/> <wsdl:input> <mime:content type="application/xml" part="parameters"/> </wsdl:input> <wsdl:output> <mime:content type="application/xml" part="parameters"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="HelloWorldService"> <wsdl:port name="HelloWorldServiceHttpSoap11Endpoint" binding="ns:HelloWorldServiceSoap11Binding"> <soap:address location="">http://localhost:8080/axis2/services/HelloWorldService"/> </wsdl:port> <wsdl:port name="HelloWorldServiceHttpSoap12Endpoint" binding="ns:HelloWorldServiceSoap12Binding"> <soap12:address location="">http://localhost:8080/axis2/services/HelloWorldService"/> </wsdl:port> <wsdl:port name="HelloWorldServiceHttpEndpoint" binding="ns:HelloWorldServiceHttpBinding"> <http:address location="">http://localhost:8080/axis2/services/HelloWorldService"/> </wsdl:port> </wsdl:service> </wsdl:definitions>
参考文献
作成方法 [1]
http://d0ec7852ef61.seesaa.net/article/114453462.html作成方法 [3]
http://www.h5k.me/h5kmemo/2010/02/web.htmlhttp://www.atmarkit.co.jp/ait/articles/0301/23/news001_3.html
* Java2WSDLコマンド
https://www.samuraiz.co.jp/adobeproduct/jrun/docs/jr4/docs/html/Programmers_Guide/ws_wsdl4.html