■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
                      2009年10月11日

    Java総合講座 - 初心者から達人へのパスポート
                  vol.174

                                セルゲイ・ランダウ
 バックナンバー: http://www.flsi.co.jp/Java_text/
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■


[このメールマガジンは、画面を最大化して見てください。]


========================================================
◆ 01.SOAPのアプリケーション(Webサービス)
========================================================


vol.172でも述べたように、これまでにLinuxのPCに行ってきたデプロイ作業は
テスト段階用のものです。
通常は、ソフトウエアの設計・開発からテストまではソフトウエア開発会社に
委託して行うことが多いので、テスト段階のデプロイは受託した会社が開発環境
と直結した形で行うことが多いのです。

ところが、本番になると開発環境にはつながっていない(セキュリティーの観点
から考えても、つながっていることは望ましくない)のが普通であり、開発環境
とは独立した形でインストールあるいはデプロイできるようにようにしておく
必要があります。

では、本番用のデプロイはどのように行うかというと、必要なファイル類を
外部記憶媒体(昔は磁気テープを使うことが多かったが、現在はCD類(CD-R等)
を使うことが多い)に入れ、その外部記憶媒体から本番用コンピューターの
ハードディスクにファイルを移動(コピー)し、それらのファイルからデプロイ
やインストールを行うのが普通です。
このときJavaのプログラムはJARファイルにして外部記憶媒体に入れるのが普通
であり、したがって、デプロイ作業に使用するビルド・ファイルはvol.172で編集
したものと違い、JARファイルの作成までのステップは不要になります。
(vol.172のビルド・ファイルからJARファイルの作成までのステップをなくし、
用意されているJARファイルからデプロイを行うためのビルド・ファイルおよび
プロパティー・ファイル(build.properties)にするには、どのように編集す
ればいいかについては、vol.172までの記事を理解できている人にはたやすい
ことだと思いますので、読者への演習課題としておきます。)

このとき、この外部記憶媒体はお客様への納品物となります。もちろん外部記憶媒体
だけでなく説明書も必要になりますので、お客様には、次のものが納品されることに
なります。

(1) 本番用のコンピューターにデプロイ(およびその前提となるソフトウエアの
インストール)を行うために必要な全ファイル一式を入れた外部記憶媒体(CD等)。
これらのファイルの中には、必要に応じてデプロイやインストールを容易にする
ためのバッチ・ファイル(スクリプト・ファイル)あるいはインストールを行う
自前のプログラム(いわゆるインストーラー)も含める。

(2) インストールやデプロイの手順書、およびシステムの運用や操作の手順書。

┌補足─────────────────────────┐
システムの運用や操作の手順書の中には、データベースや各種
データ・ファイルのバックアップ(外部への保管)およびリス
トア(バックアップしたデータの復元)の方法や緊急時の対処
方法など、通常のシステム運用とは異なる手順も含み、また場合
によっては、それらを容易にするためのスクリプト・ファイル
なども予め作成して用意しておく必要があります。
また古いシステムから新しいシステムへの移行が必要な場合な
ど、移行の手順も含む必要があることもあります。
これらの話は煩雑になりますので、上記の納品物の詳細につい
ては、もっと後でプロジェクト管理の話をするときにまとめて
詳しくお話いたします。
└───────────────────────────┘

(なお、これらの納品物に不具合がないかどうかは、予めシステム・テストなどを
通して検証されます。なお、このテスト(検証)を実施する人は、未経験者が望ま
しいです。経験者の場合は、手順書等に不備があっても、経験に基づいて無意識に
正しい操作をしてしまい、不備に気づかない恐れがあるからです。なお、この
テストで見つかった納品物の不備は修正後、再度テストを繰り返し、不備を除去
していきます。)

といっても、実際の本番用のデプロイも通常は開発を受託した会社が行います。
開発を受託した会社は、システムの引渡しだけでなく、お客様の受け入れテスト、
オペレーターやユーザーへの(システム運用方法や操作方法の)教育から本番への
移行(試運転から本番稼動まで)まで立ち会うのが普通です。



◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆


では、Webサービス側の開発は完了したということにして、これからクライアント側
のWebアプリケーションの開発のほうの話にはいっていきましょう。
(現在LinuxのPCにデプロイしてあるWebサービスを本番用のWebサービスと見なし
て作業を進めることにします。)

今までのWebサービス側の開発はH社(ホテル)側だったのに対し、今度はR社(旅行会社)側
の開発作業になります。

どのようなWebアプリケーションを開発する予定だったか忘れてしまっているだろうと
思いますので、vol.135から該当箇所を抜き出して下に再度提示しておきます。

--------------------------------------------------------
クライアント側(R社側):
Webアプリケーションとして以下のようなシステムを考える。
(R_1) 旅行の検索&予約:
 出発地、行き先、旅行開始年月日、旅行日数、旅行者人数などを入力すると、適切な
 交通経路と交通機関、ホテルなどの候補リストを表示してくれる。また、候補リスト
 から選択したホテルや交通機関などに対して、予約ができる。
--------------------------------------------------------

ただし、このようなWebアプリケーションを作成するのは、Webアプリケーションの
中でWebサービスを呼び出す方法を学んでもらうことが目的であり、目的に関係ない
部分はうんと手抜きをして、なるべく簡単なアプリケーションで済ませることに
します。

という訳で、「適切な交通経路と交通機関、ホテルなどの候補リストを表示して
くれる。」という部分に対してはすべて決めうち(予め用意した固定したデータ
だけを表示する)にし、ホテルの候補リストはH社のホテルのみを表示するものと
します。
また、「候補リストから選択したホテルや交通機関などに対して、予約ができる。」
という部分に対しては、交通機関の予約に対しては、ダミー(見せかけ)の予約ボタン
だけを用意し、実際には予約の機能は省略することにします。


では、このR社のWebアプリケーションも、例によってHTML、サーブレット、JSPの
組み合わせでMVCスタイルで作成しましょう。

まず、このWebアプリケーションを開発するためのEclipseのプロジェクトを次のよう
にして用意しておきましょう。

(1) Eclispeを起動し、メニュー・バーの「ファイル」をクリック(またはパッ
ケージ・エクスプローラー内で右クリック)し、「新規」→「プロジェクト」
を選択します。

(2)「Java」の中の「Tomcatプロジェクト」を選択し、「次へ」ボタンをクリック
します。

(3)「プロジェクト名」に
JStudyRshaSoapClient
と入力し、「終了」ボタンをクリックしてください。

なお、このJStudyRshaSoapClientはJStudySoapClientの場合と同じくaxisの
ライブラリー(JARファイル)が必要になります(vol.127参照)ので、
JStudyRshaSoapClientプロジェクトのクラスパスに登録しておきましょう。
既にvol.127でaxisというユーザー・ライブラリー名を用意しましたので、
これを利用すれば作業は楽になりますが、ただ、実際に作業を行うのはR社で
あって、vol.127の作業は行っていない訳です。
そこで、R社ではaxisのユーザー・ライブラリーを新規に作成することになる
ということを自覚すべく、別の名前(Rsha_axisという名前にする)で新たに
axisのユーザー・ライブラリーを用意することにしましょう。
なお、R社の環境でもTomcatとAxisのインストールが必要ですが、これはこれまで
に行ったインストール作業と同様に既に完了したことにしておきます。
(H社側の開発とR社側の開発を同じPCのEclipseで行うと、頭がこんがらがって
しまうかも知れませんが、今はH社ではなくR社のPCで開発をしているんだという
ことを意識していて下さい。)

(1) Eclipseのパッケージ・エクスプローラーの中でJStudyRshaSoapClientプロ
ジェクトを右クリックし、「ビルド・パス」→「ライブラリーの追加」を選択
します。

(2) 「ライブラリーの追加」ウインドウにおいて「ユーザー・ライブラリー」
を選択し、「次へ」ボタンをクリックします。

(3) 「ユーザー・ライブラリー」ボタンをクリックします。

(4) 「新規」ボタンをクリックします。

(5) 「ユーザー・ライブラリー名」に

Rsha_axis

と入力し、「OK」ボタンをクリックします。

(6) 「Rsha_axis」を選択し、「JARの追加」ボタンをクリックします。

(7) 「JARの選択」ウインドウで、

C:\Tomcat6.0\webapps\axis\WEB-INF\lib

の中のすべてのJARファイルを複数選択し、「開く」ボタンをクリックします。

(8) 「設定」ウインドウの「OK」ボタンをクリックします。

(9) 「ライブラリーの追加」ウインドウの中で「Rsha_axis」にチェック・
マークが付いていることを確認し、「終了」ボタンをクリックします。



さて、H社のWebサービスを呼び出せるようにするためには、そのWSDLを取り込むこと
によってスタブを生成しておく必要があります。

そのために、次のような作業を行いましょう。

(1) パッケージ・エクスプローラーの中のJStudyRshaSoapClient(プロジェクト)を
右クリックし、「新規」→「ファイル」を選択します。

(2) 「新規ファイル」ウインドウにおいて「ファイル名」に
build.xml
と入力し、「終了」ボタンをクリックします。

(3) build.xmlファイルが開くので、下記のような内容を入力します。

--------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
 <project name="WebServices Stub" 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="wsdl2java">
     <axis-wsdl2java
      output="${sources.dir}"
      url="${wsdl.url}" >
     </axis-wsdl2java>
   </target>
 </project>
--------------------------------------------------------

これは、vol.141のときとほとんど同様ですが、vol.141と違ってWSDLをローカルな
ファイルではなく、LinuxのPCにおけるWebサービスのWSDLのURLを指定して取得する
必要があるため、url=の値をlocal.wsdlというプロパティー名(変数名)の代わりに
wsdl.urlというプロパティー名に変えていることに注意して下さい(ここがvol.141
のときと違うということを意識してもらうためにわざわざ名前を変えています)。

(4) パッケージ・エクスプローラーの中のJStudyRshaSoapClient(プロジェクト)を
右クリックし、「新規」→「ファイル」を選択します。

(5) 「新規ファイル」ウインドウにおいて「ファイル名」に
build.properties
と入力し、「終了」ボタンをクリックします。

(6) build.propertiesファイルが開く(そのままだと、ビルド・プロパティー・エディター
が開くので、その下部にある「build.properties」タブをクリックするか、または、
いったんファイルを閉じてからパッケージ・エクスプローラーの中のbuild.properties
を右クリックし、「アプリケーションから開く」→「テキスト・エディター」を選択
する。)ので、下記のような内容を入力します。
--------------------------------------------------------
sources.dir=C:/JavaWorks/JStudyRshaSoapClient/WEB-INF/src
axis.dir=C:/Tomcat6.0/webapps/axis/WEB-INF
wsdl.url=http://192.168.0.5:8080/axis/services/Hotel?wsdl
--------------------------------------------------------

ただし、上記の192.168.0.5という部分は、筆者の環境におけるLinuxのPC(対象となる
Webサービスが稼動するコンピューター)のIPアドレスです。この部分は読者の各自の
環境に合わせて書き換えて下さい。このURLの指定によって、ネットワークを経由して
WSDLを取得することが可能になります。
なお、H社はこのWSDLのURLをWebサービスの利用者(R社など)に教えてあげる必要が
あります。

┌補足─────────────────────────┐
なお、このWSDLのURLは、vol.127などで登場しているWSDL2Java
コマンドに指定したURLのlocalhostの部分とWebサービスの名前
(vol.127ではWebService1)の部分をそれぞれ現在対象として
いるWebサービスのものに書き換えれば済みます。
しかし、より確実にするためには、Webブラウザーで、LinuxのPC
のAxisのWebページ
http://192.168.0.5:8080/axis/
を開き(vol.126参照)、そのWebページの「リスト」をクリック
し、表示されたWebサービスのリストの中から、「Hotel(wsdl)」
のwsdlの部分を選択(クリック)すればアドレス域にWSDLのURL
(http://192.168.0.5:8080/axis/services/Hotel?wsdl)が現れ
ますので、これをコピー&ペーストして利用すれば、作業が楽
で、かつ、入力間違いをおかさずに済みます。
└───────────────────────────┘


以上のファイルの入力が終わったら、保管(Ctrl + S)して閉じておきましょう。


続いて、下記のようにしてAntを実行します。(予め、Linux(CentOS)のPCを起動させ、
Tomcatが稼動している(Axisが稼動している(Webサービスが利用できる状態になっている))
必要があります。)

(1) パッケージ・エクスプローラー内で、先ほど作成したbuild.xmlを右クリックし、
「実行」→「2 Ant実行」を選択します。

(2) Antが実行され、コンソールにメッセージが表示されます。最終的に

BUILD SUCCESSFUL
Total time: 5 seconds

のようなメッセージが表示されればOKです。
(ただし、Total timeの数字は環境によって異なります。)

なお、このスタブを生成する作業は、H社のWebサービスの開発が完了していなく
ても、WSDLさえ公開されていれば、実行できることを思い出してください。
以前にもお話したように、これから行うWebアプリケーションの開発は、(WSDLさえ
先に作成してもらっていれば)Webサービスの開発と並行して行うことができるの
です。

(3) ワークスペース内のJStudyRshaSoapClientプロジェクト内にJavaのソース・ファ
イルが生成されているはずなのですが、これをパッケージ・エクスプローラー内
に表示させるためには、パッケージ・エクスプローラー内のJStudyRshaSoapClientを
右クリックし「更新」を選択します。

WEB-INF/srcの配下にjp.co.flsi.lecture.webservice.hotelというパッケージができて、
その配下に

Facilities.java
Hotel.java
HotelService.java
HotelServiceLocator.java
HotelSoapBindingStub.java
RoomInfo.java
RoomReserveInfo.java
StayInfoInput.java

が生成されていますね。
これらのファイルは例によってUTF-8のエンコーディングになっているので、
デフォルトではコメント行などの漢字の部分が文字化けしてしまいます。
JStudyRshaSoapClientプロジェクトのエンコーディングをUTF-8に変更して
おきましょう。
そのためには、パッケージ・エクスプローラー内で、JStudyRshaSoapClient(プロジェ
クト)を右クリックし、「プロパティー」を選択して、「情報」の画面内の「テキスト・
ファイル・エンドード」欄内で「その他」を選択し、その右側のリストから「UTF-8」
を選択(「MS932」の右側のボタンをクリックして、リストの中の一番下までスクロー
ルすると「UTF-8」があるのでそれを選択)し、「OK」ボタンをクリックします。



では、この生成されたスタブを使って、Webサービスを呼び出すWebアプリケー
ションをこれから作っていきましょう。



(次回に続く)


では、今日はここまでにします。



┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
★ホームページ:
      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. 不許無断複製