初めに
* WSDLを自動生成する際に、以下の関連記事のように行った場合に、勝手にパッケージ名がしてされてしまうので 自分好みのパッケージ名にする手順を記す。http://blogs.yahoo.co.jp/dk521123/31984636.html
[1] サーバ側スケルトンを生成
コマンド構文
wsdl2java.bat -uri [wsdlのアドレス] -s -ss -sd -ssi -p [変更後のpackage] -ns2p [変更前のnamespace]=[変更後のpackage] -o [出力先] -uri ... WSDLドキュメントの場所(リモートURLでも、ローカルファイルのパスでも可) -s ... スケルトンの生成 -ss ... サーバー側コード生成 -sd ... サーバ側service.xmlの生成 -o ... 出力先を指定する。 -u ... 生成時にソースを別にする -p ... 生成したコードに対して独自のpackage名を指定 ★ここ★ -ns2p ... WSDLスキーマ内の特定の各namespaceに対して、独自のpackage名を指定 ★ここ★ 詳細は下記の関連記事を参照のこと。http://blogs.yahoo.co.jp/dk521123/33842530.html
例
コマンドプロンプトで以下を実行。事前にXSDLファイル「HelloWorld.wsdl(下記【対象のWSDLファイル】)」を「C:\pg\axis2-1.6.2\bin」に保存しておく。cd C:\pg\axis2-1.6.2\bin wsdl2java.bat -uri HelloWorld.wsdl -u -s -ss -sd -ssi -p com.sample -ns2p http://helloworld.webservice.moodykettle.com=com.sample -o out
出力結果(スケルトン)
build.xml :Ant用ファイル srcフォルダ :スケルトンコード(※) resourcesフォルダ :WSDLファイルのコピー ※スケルトンコードの詳細 src + com + sample + ExtensionMapper.java + HelloWorldServiceMessageReceiverInOut.java + HelloWorldServiceSkeleton.java + HelloWorldServiceSkeletonInterface.java + SayHello.java + SayHelloResponse.java
[2] プロジェクトにスケルトンコードを追加
[2-1] Eclipseで、「File]-[New]-[Java Project]でプロジェクトを追加(「HellowWorldServer」とする) [2-2] 追加したプロジェクト「HellowWorldServer」を右クリックし、[Import]-[General]-[File System]を選択 [2-3] Browseボタン押下し、wsdl2javaコマンドより生成したファイルを追加(例の場合「C:\pg\axis2-1.6.2\bin\out」) [2-4] 「Select All」ボタンを押下し、全てを選択(build.xml含む)し、「Finish」ボタン押下
[3]スケルトン「XxxxSkeleton.java」を実装し、ビルドする
[3-1] スケルトン「XxxxSkeleton.java」を実装する(下記「サンプル」を参照のこと) [3-2] パッケージ名「HellowWorldServer」を右クリックし、[Propaties]-[Java Build path]-[Libraries]-[Add External JARs]で「C:\pg\axis2-1.6.2\lib」配下のJarファイルを全て追加する [3-3] build.xmlを右クリックし、[Run As]-[Ant Build]を選択し、ターゲットを「jar.server」にして「OK」ボタン押下で、ビルドする →ビルドが正常に完了した場合、「HellowWorldServer\build\lib」にAARファイル「HelloWorldService.aar」が作成できている
サンプル
HelloWorldSkeleton.java
/** * HelloWorldServiceSkeleton.java * * This file was auto-generated from WSDL * by the Apache Axis2 version: 1.6.2 Built on : Apr 17, 2012 (05:33:49 IST) */ package com.sample; /** * HelloWorldServiceSkeleton java skeleton for the axisService */ public class HelloWorldServiceSkeleton implements HelloWorldServiceSkeletonInterface { /** * Auto generated method signature * * @param sayHello0 * @return sayHelloResponse1 */ public com.sample.SayHelloResponse sayHello(com.sample.SayHello sayHello0) { // 自分で追加したコード/ここから com.sample.SayHelloResponse response = new com.sample.SayHelloResponse(); response.setSayHelloReturn("Hello, " + sayHello0.getName()); return response; // 自分で追加したコード/ここまで } }
[4]AARファイルをアップロードする
[4-1] 以下からWARファイル(WAR Distribution)をダウンロードし、 Tomcatの「【TOMCAT_HOME】/webapps」に置くhttp://axis.apache.org/axis2/java/core/download.cgi
[4-2] Tomcatサーバを立ち上げ、以下をブラウザで表示する[http://localhost:8080/axis2/]
[4-3] 「【TOMCAT_HOME】/webapps/axis2/WEB-INF/services」配下に [3-3]で作成したAARファイル「HelloWorldService.aar」を置く
[5]動作確認
[5-1] 以下をブラウザで表示する[http://localhost:8080/axis2/services/HelloWorldService/sayHello?name=Mike]
【出力結果】以下が表示されるはず <ns1:sayHelloResponse xmlns:ns1="">http://helloworld.webservice.moodykettle.com"> <ns1:sayHelloReturn>Hello, Mike</ns1:sayHelloReturn> </ns1:sayHelloResponse>
対象のWSDLファイル
HelloWorld.wsdl
https://code.google.com/p/java-sample-programs/source/browse/trunk/WebService/WebContent/wsdl/HelloWorld.wsdl?r=15<wsdl:definitions xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://helloworld.webservice.moodykettle.com" xmlns:intf="http://helloworld.webservice.moodykettle.com" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="">http://helloworld.webservice.moodykettle.com"> <wsdl:types> <schema xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="">http://helloworld.webservice.moodykettle.com"> <element name="sayHello"> <complexType> <sequence> <element name="name" type="xsd:string" /> </sequence> </complexType> </element> <element name="sayHelloResponse"> <complexType> <sequence> <element name="sayHelloReturn" type="xsd:string" /> </sequence> </complexType> </element> </schema> </wsdl:types> <wsdl:message name="sayHelloResponse"> <wsdl:part element="impl:sayHelloResponse" name="parameters" /> </wsdl:message> <wsdl:message name="sayHelloRequest"> <wsdl:part element="impl:sayHello" name="parameters" /> </wsdl:message> <wsdl:portType name="HelloWorld"> <wsdl:operation name="sayHello"> <wsdl:input message="impl:sayHelloRequest" name="sayHelloRequest" /> <wsdl:output message="impl:sayHelloResponse" name="sayHelloResponse" /> </wsdl:operation> </wsdl:portType> <wsdl:binding name="HelloWorldSoapBinding" type="impl:HelloWorld"> <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" /> <wsdl:operation name="sayHello"> <wsdlsoap:operation soapAction="" /> <wsdl:input name="sayHelloRequest"> <wsdlsoap:body use="literal" /> </wsdl:input> <wsdl:output name="sayHelloResponse"> <wsdlsoap:body use="literal" /> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="HelloWorldService"> <wsdl:port binding="impl:HelloWorldSoapBinding" name="HelloWorld"> <wsdlsoap:address location="http://localhost:8080/WebService/services/HelloWorld" /> </wsdl:port> </wsdl:service> </wsdl:definitions>
スタブを作成する場合
wsdl2java.bat -uri HelloWorld.wsdl -s -p com.sample -ns2p http://helloworld.webservice.moodykettle.com=com.sample -o outclient