■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 2009年01月25日 Java総合講座 - 初心者から達人へのパスポート vol.137 セルゲイ・ランダウ バックナンバー: http://www.flsi.co.jp/Java_text/ ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ [このメールマガジンは、画面を最大化して見てください。] ======================================================== ◆ 01.SOAPのアプリケーション(Webサービス) ======================================================== では、前回の作業で生成されたファイルを見てみましょう。 まず、Eclipseのパッケージ・エクスプローラーのJStudySOAP(プロジェクト) の中にjp.co.flsi.lecture.webservice.hotelというパッケージができていて、 その中に Facilities.java Hotel.java HotelService.java HotelServiceLocator.java HotelSoapBindingImpl.java HotelSoapBindingStub.java RoomInfo.java RoomReserveInfo.java StayInfoInput.java deploy.wsdd undeploy.wsdd というファイルができていますね。 ここでHotelSoapBindingImpl.javaというファイルができていることに注目 してください。これが何者なのか、説明しておきましょう。 前回のビルド・ファイル(build.xml)では、axis-wsdl2javaタスクに implementationClassName属性を指定しなかったですね。 この場合に、HotelのWebサービスを実装するクラスの名前がHotelSoapBindingImpl になるのです。 つまり、Webサービスのインターフェースの名前(ここではHotel)の後ろに SoapBindingImplを付けたものが、Webサービスを実装するクラスの標準の名前 なのです。 というわけで、これからH社側(サーバー側)では、このファイルを直接編集する ことによって、Webサービスの実装を行うことになります。 ちなみに、同じビルド・ファイル(build.xml)でAntを再度実行した場合は、この HotelSoapBindingImpl.javaファイルは書き換えられないようになっています。 つまり、Webサービスを実装するクラスが既に作られている場合は、それを書き換え ないような仕組みになっていますので、このファイルを直接編集しても問題ない訳 です。 あと、Facilities.javaやRoomInfo.javaやRoomReserveInfo.javaやStayInfoInput.java のソース・コードを見てみましょう。 これらは、vol.135では、publicなフィールド(変数)のみしか定義していなかった のに対し、自動生成されたクラスでは、フィールドはprivateになり、setterメソッ ドやgetterメソッドが用意されてカプセル化されていることがわかります。 というわけで、vol.135の段階ではカプセル化する必要がなかったのです。 そして、今後実装していくHotelSoapBindingImplクラスでは、これらのカプセル化さ れているほうのクラスを使うことになるのです。 続いて、 C:\ant_work2 の中を見てみましょう。 Hotel.wsdl ができていますね。 このファイルをR社(クライアント側)に提供すれば、R社がWebサービスを呼び出す アプリケーションを開発していくことができます。 つまり、このファイルをR社に直接渡す(Eメールにファイルを添付して送信する か、あるいはCD-ROMなどに焼き付けて郵送するなどの方法で渡すか、あるいは 手渡しする)と、あとはR社がこのWSDLファイルを使ってスタブのファイルを生成 し、Webサービスを呼び出すアプリケーションを開発する作業を進めていくことが できます。 しかし、WSDLファイルは直接渡さなくても、インターネット経由でURLを指定して 取り出すようにすることもできますね。 あるいは、R社以外にもいくつか利用してくれる会社があるとしたら、すべての会社に 直接渡すのは面倒くさいですから、そういう場合はインターネット経由でURLを指定 して取り出すようにしておくとよいでしょう。 そのためには、公開用のAxisにデプロイを行っておきます。 これは、vol.132のbuild.xmlファイルを参考にすればできると思いますので、演習問題 にしておきましょう。 さて、前回はbuild.xmlファイルの中に <mkdir dir="${work.dir}"/> というタスクを指定することによって、work.dirプロパティーに設定したC:/ant_work2 ディレクトリーを作成しましたが、これは前回書いた通り、あくまで、Antでできる 作業の例として用意したものであり、WSDLファイルの作成のために必要というわけ ではありません。 今回は、C:/ant_work2のような専用のディレクトリーは作らずに、WSDLファイルを Eclipseのワークスペース内に書き出すようにしてみましょう。 そのためには、build.xmlファイルとbuild.propertiesファイルを以下のように 修正すればいいですね。 (1) まず、build.xmlファイルから<mkdir dir="${work.dir}"/>の行を取り除き、 -------------------------------------------------------- <?xml version="1.0" encoding="UTF-8"?> <project name="WebServices Deploy" basedir="." default="wsdl2java"> <property file="build.properties" /> <path id="axis.classpath"> <fileset dir="${axis.dir}/lib"> <include name="**/*.jar" /> </fileset> </path> <taskdef resource="axis-tasks.properties" classpathref="axis.classpath" /> <target name="java2wsdl"> <axis-java2wsdl classname="jp.co.flsi.lecture.soap.hotelinterface.Hotel" location="http://localhost:8080/axis/services/Hotel" namespace="http://hotel.webservice.lecture.flsi.co.jp/" output="${local.wsdl}" > <classpath> <pathelement path="${classes.dir}"/> </classpath> </axis-java2wsdl> </target> <target name="wsdl2java" depends="java2wsdl"> <axis-wsdl2java output="${sources.dir}" serverside="true" url="${local.wsdl}" > </axis-wsdl2java> </target> </project> -------------------------------------------------------- という内容にしましょう。 (2) build.propertiesファイルの中のwork.dirの値を修正し、 -------------------------------------------------------- work.dir=C:/JavaWorks/JStudySOAP classes.dir=C:/JavaWorks/JStudySOAP/bin sources.dir=C:/JavaWorks/JStudySOAP/src axis.dir=C:/Tomcat6.0/webapps/axis/WEB-INF local.wsdl=${work.dir}/Hotel.wsdl axisservlet=axis/services/AdminService wsdd.dir=${work.dir}/jp/co/flsi/lecture/webservice/hotel wsdd.deployfile=${wsdd.dir}/deploy.wsdd wsdd.undeployfile=${wsdd.dir}/undeploy.wsdd -------------------------------------------------------- という内容にしましょう。 以上のファイルの修正が終わったら、保管(Ctrl + S)しておきましょう。 (3) 最後に、build.xmlを実行(前回と同様に、パッケージ・エクスプローラー内 でbuild.xmlを右クリックし、「実行」→「2 Ant実行」を選択)しましょう。 これで、Hotel.wsdlファイルがEclipseのワークスペースのJStudySOAPフォルダー内 にできているはずですから、前回と同様に、パッケージ・エクスプローラー内の JStudySOAPを右クリックし「更新」を選択してみてください。Hotel.wsdlが表示され ますね。 ちなみに、このHotel.wsdlをダブル・クリックすると、WSDL専用のエディターが起動 してWSDLの内容をわかりやすく表示してくれます。 では、次回は、このWebサービスの実装(H社側の開発作業)に入っていきましょう。 (次回に続く) では、今日はここまでにします。 ====================================================== ◆ 02.演習問題 ====================================================== vol.132を参考にして、ローカルな(build.xmlを実行する環境と同じ コンピューター内にある)Axisにデプロイを行うように、 build.xmlファイルを修正し、デプロイを実行してください。 なお、このときbuild.propertiesファイルも修正する必要があります。 ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ★ホームページ: http://www.flsi.co.jp/Java_text/ ★このメールマガジンは 「まぐまぐ(http://www.mag2.com)」 を利用して発行しています。 ★バックナンバーは http://www.flsi.co.jp/Java_text/ にあります。 ★このメールマガジンの登録/解除は下記Webページでできます。 http://www.mag2.com/m/0000193915.html ★このメールマガジンへの質問は下記Webページにて受け付けて います。わからない所がありましたら、どしどしと質問をお寄 せください。 http://www.flsi.co.jp/Java_text/ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ Copyright (C) 2009 Future Lifestyle Inc. 不許無断複製 |