NetBeans IDE 上での Apache Axis2 Web サービスの作成
このチュートリアルでは、Java クラスから Apache Axis2 Web サービスを作成し、配備する方法を説明します。NetBeans IDE 付属の Tomcat サーバーと GlassFish サーバーをセットアップして、Axis2 Web サービスを配備する方法についても学びます。このチュートリアルでは、IDE が Axis2 Web サービスを正しく配備できるように IDE の Axis2 オプションを設定する方法についても説明します。
Apache Axis は、W3C へ提案された SOAP (Simple Object-Access Protocol) に関する実装です。Apache Axis2 は、より効率性とモジュール性を高め、XML 指向を強化した Axis のバージョンです。Axis2 は SOAP 1.1 と SOAP 1.2 をサポートするだけでなく、RESTful Web サービスに対しても統合サポートを提供します。同じビジネスロジックの実装により、WS-* スタイルのインタフェースと REST/POX スタイルのインタフェースが両方とも同時に提供されます。Axis2 の詳細については、Apache.org の Web サイト を参照してください。
Axis2 Web サービスは、Metro と相互利用できます。Axis2 Web サービス用の JAX-WS クライアントを作成できます。ただし、いくつかの複雑な Axis2 WSDL オペレーションについては、サポートされていないものもあります。
目次
このチュートリアルに従うには、次のソフトウェアとリソースが必要です。
NetBeans IDE
version 6.1
Java Development Kit (JDK)
version 6 または
version 5
Apache Axis 2
version 1.3 以上
Apache Ant がインストールされ、
パスに追加されていること
最新バージョン
Java EE 互換の Web サーバーまたはアプリケーションサーバー
Tomcat Web サーバー 6.0 および/または
GlassFish アプリケーションサーバー v2
Tomcat および GlassFish は、どちらも NetBeans IDE の Web および Java EE の配布とともにインストールできます。または、GlassFish のダウンロードページ または Apache Tomcat のダウンロードページ からダウンロードすることもできます。
このチュートリアルでは、Axis2 Support プラグインも必要です。IDE で「ツール」メニューの下にある「プラグイン」マネージャーを開き、「インストール済み」タブで「Axis2 Support」プラグインがインストールされているかを確認します。インストールされていない場合、「使用可能なプラグイン」タブから次のようにインストールします。
Apache Axis2 および Apache Ant のインストール
Apache Axis2 および Apache Ant は、どちらもアーカイブファイルとしてダウンロードされます。Axis2 はここ にダウンロードでき、Ant はここ にダウンロードできます。これらのプログラムをインストールするには、ダウンロードされたアーカイブを任意の場所に展開します。今後、インストールディレクトリはそれぞれ、AXIS2_HOME および ANT_HOME とします。Ant のインストール後、ANT_HOME/bin ディレクトリへのパスをクラスパスに追加します。
Axis2 WAR ファイルの作成およびコピー
Axis2 Web サービスをアプリケーションサーバーに配備するため、サーバーには axis2.war (Web ARchive) ファイルのコピーが必要です。Axis2 インストールディレクトリの Apache Ant を実行することで、axis2.war ファイルを作成できます。axis2.war の作成後、Tomcat ベースと GlassFish にコピーします。
Axis2 WAR ファイルを作成し、コピーするには、次の手順に従います。
AXIS2_HOME/webapp に移動します。このディレクトリでコマンドプロンプトを開き、ant コマンドを実行します。Ant により、AXIS2_HOME/webapp/build.xml ファイルに基づいて AXIS2_HOME/dist/axis2.war が作成されます。クラスパスに ANT_HOME/bin が指定されている必要があります。
AXIS2_HOME/dist/axis2.war を Tomcat CATALINA_BASE/webapps ディレクトリにコピーします。CATALINA_BASE の場所がわからない場合、IDE を起動して「サービス」タブを開きます。「サーバー」ノードを展開します。「Tomcat 6.0」ノードを右クリックし、コンテキストメニューから「プロパティー」を選択します。「Catalina のベース」の場所が「接続」タブに表示されます。
AXIS2_HOME/dist/axis2.war を GLASSFISH_HOME/domains/DOMAIN_NAME/autodeploy にコピーします。GLASSFISH_HOME およびドメインの名前を検索するには、IDE を起動して「サービス」タブを開きます。「サーバー」ノードを展開します。「GlassFish V2」ノードを右クリックし、コンテキストメニューから「プロパティー」を選択します。ドメインフォルダの場所とドメイン名が「接続」タブに表示されます。たとえば、次の画像からは、axis2.war を C:\Program Files\glassfish-v2ur1\domains\domain1\autodeploy にコピーすることがわかります。
Tomcat 用の Axis2 オプションのセットアップ
Axis のサービスは、GlassFish 上よりも Tomcat 上のほうが高速で実行されますが、セットアップが若干複雑です。Tomcat と GlassFish の両方に同じサービスを簡単に配備できます。これは、最初に一方のサーバーに配備し、次に Axis2 オプションを変更してからもう一方のサーバーに配備することにより実現できます。
Tomcat ではなく GlassFish に配備する場合は、「GlassFish 用の Axis2 オプションのセットアップ 」を参照してください。
Tomcat 用の Axis2 オプションをセットアップするには、次の手順に従います。
IDE を起動します。メニューバーから「ツール」>「オプション」を選択します。「オプション」ダイアログが開きます。
「Axis2」アイコンをクリックします。Axis2 の配備オプションのページが開きます。
Axis2 AAR ファイルのターゲットの場所を CATALINA_BASE (TOMCAT_HOME ではない) webapps/axis ディレクトリに設定します。CATALINA_BASE の場所は、「Axis2 WAR ファイルの作成およびコピー 」で説明される、Tomcat サーバーのプロパティーにあります。
Axis2 URL フィールドに、Tomcat サーバーの正しいポート番号が指定されていることを確認してください。ポート番号を確認するには、(「サービス」タブまたは「ツール」>「サーバー」から) Tomcat を起動し、Coyote HTTP/1.1 が使用するポートを確認します。
便宜上、「Use Tomcat Manager for Deployment」を選択します。この機能を使用すると、axis2.war に変更を加えるたびに、IDE が Tomcat Manager をバックグラウンドで起動して、reload コマンドを axis2.war で実行します。「Use Tomcat Manager for Deployment」を選択しない場合は、axis2.war に変更を加えるたびに、Tomcat Manager を手動で実行するか、ほかの Tomcat ツールを使用してこのファイルを再読み込みします。
Tomcat Manager のデフォルトのユーザー名は「tomcat」で、デフォルトのパスワードも「tomcat」です。Tomcat Manager が配備され、デフォルトのマネージャーロールのユーザー名とパスワードがあることを再確認するには、CATALINA_BASE/conf/tomcat-users.xml を開きます。次のバージョンのファイルに示すように、マネージャーロールを定義し、これに対してユーザー名とパスワードを割り当てておく必要があります。このファイルは、必要に応じてコピー&ペーストできます。
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="manager" />
<role rolename="admin"/>
<user username="tomcat" password="tomcat" roles="manager ,admin"/>
<user username="ide" password="YENnS8UT" roles="manager,admin"/>
</tomcat-users>
GlassFish 用の Axis2 オプションのセットアップ
Tomcat のほうが大幅に高速ではありますが、GlassFish アプリケーションサーバーに Axis2 Web サービスを配備することもできます。Tomcat と GlassFish の両方に同じサービスを簡単に配備できます。これは、最初に一方のサーバーに配備し、次に Axis2 オプションを変更してからもう一方のサーバーに配備することにより実現できます。
GlassFish ではなく Tomcat に配備する場合は、「Tomcat 用の Axis2 オプションのセットアップ 」を参照してください。
Glassfish 用の Axis2 オプションをセットアップするには、次の手順に従います。
IDE を起動します。メニューバーから「ツール」>「オプション」を選択します。「オプション」ダイアログが開きます。
「Axis2」アイコンをクリックします。Axis2 の配備オプションのページが開きます。
Axis2 AAR ファイルのターゲットの場所を GLASSFISH_HOME/domains/DOMAIN_NAME/autodeploy ディレクトリに設定します。GLASSFISH_HOME の場所とドメインの名前は、「Axis2 WAR ファイルの作成およびコピー 」で説明される、GlassFish サーバーのプロパティーにあります。
注: axis2.war を autodeploy ディレクトリに配置することにより、axis2.war を変更するたびに GlassFish はこのファイルを自動的に再配備します。
Axis2 URL フィールドに、GlassFish サーバーの正しいポート番号が指定されていることを確認してください。ポート番号を確認するには、「サービス」タブまたは「ツール」>「サーバー」から GlassFish を起動し、HTTP 1.1 が使用する 80xx ポートを確認します。次の画像では、正しいポート番号は 8081 です。
注: Windows Vista を使用している場合は、GlassFish を Program Files フォルダにインストールし、ユーザーアクセス制御を有効にすると、IDE から axis2.war ファイルへの変更を行えなくなります。GlassFish を別の場所にインストールするか、ユーザーアクセス制御を無効にします。
Axis2 Web サービスの作成
NetBeans IDE では、Java クラスから Axis2 Web サービスを作成できます。これは、Java アプリケーションまたは Java ライブラリプロジェクトからのみ実行できます。このチュートリアルでは、Java ライブラリプロジェクトを作成し (メインメソッドが必要ないため)、そのプロジェクトで Axis2 Web サービスを作成し (同時に Java クラスを作成)、Axis2 Web サービスをサーバーに配備します。
Axis2 Web サービスを作成し、配備するには、次の手順に従います。
「新規プロジェクト」アイコンをクリックするか、「ファイル」>「新規プロジェクト」をクリックします。「新規プロジェクト」ウィザードが開きます。「Java」カテゴリから「Java クラスライブラリ」プロジェクトを選択します。「次へ」をクリックします。
プロジェクトに「AxisHello 」という名前を付けます。希望するプロジェクトフォルダの名前と場所を使用していることを確認します。プロジェクトを共有するかどうかは任意です。「完了」をクリックすると、IDE がプロジェクトを作成します。
プロジェクトノードを右クリックします。コンテキストメニューが開きます。コンテキストメニューで、「新規」>「その他」を選択します。「新規ファイル」ウィザードが開きます。「Web サービス」カテゴリで、「Axis2 Service from Java」を選択し、「次へ」をクリックします。
「新規ファイル」ウィザードの「Service Type Selection」ページが開きます。プロジェクトに Java クラスがないため、「Create an Empty Web Service」を選択します。すでに Java クラスをコーディングしている場合は、「Create a Web Service from an Existing Java Class」を選択します。Web サービスの WSDL を編集する場合、たとえば名前空間を追加したり変更したりする場合は、「Generate a WSDL from Java Source Code」を選択します。WSDL の編集はこのチュートリアルの範囲外であるため、これは選択しないでください。ウィザードは、次の画像のように表示されるはずです。
「次へ」をクリックします。「名前と場所」ページが開きます。Java クラスに「HelloAxisWorld」という名前を付けます。パッケージに「axishello」という名前を付けます。「Generate Sample Method」は選択したままにします。これにより、Java クラスに「Hello, World.」を返すメソッドが生成されます。
「完了」をクリックします。IDE により、axishello ソースパッケージに HelloAxisWorld.java クラスが生成され、この Java クラスをミラーリングする HelloAxisWorld Axis2 Web サービスが生成されます。「ナビゲータ」タブと「Axis2 Web Services」ノードでそれぞれ示されているように、Java クラスと Axis2 Web サービスの両方に hello:String オペレーションがあることがわかります。
Axis2 Web サービスの配備およびテスト
Axis2 Web サービスを作成したら、それをサーバーに配備する必要があります。実際には、サーバーへの配備は 2 つの手順で構成されます。
Axis2 Web サービスを、サーバーで使用される axis2.war ファイルにコピーする。この手順は、サーバーがオフラインの状態で実行できます。
更新された axis2.war ファイルをサーバーに再配備する。
「Use Tomcat Manager for Deployment」オプションを有効にした状態で Tomcat に配備しているか (「Tomcat 用の Axis2 オプションのセットアップ 」を参照)、または GlassFish に配備していて axis2.war が GLASSFISH_DOMAIN/autodeploy フォルダにある場合 (「GlassFish 用の Axis2 オプションのセットアップ 」を参照)、更新された axis2.war は自動的にサーバーに再配備されます。そうでない場合、アプリケーションサーバーツールを使用して axis2.war を手動で再配備する必要があります。このチュートリアルでは、自動的に再配備されるように Axis2 オプションをセットアップしていることを想定します。
Axis2 Web サービスをサーバーに配備するには、次の手順に従います。
Web サービスのノードを右クリックします。コンテキストメニューが開きます。「Deploy to Server」を選択します。IDE が Axis2 AAR ファイルをコンパイルし、アプリケーションサーバーで使用される axis2.war ファイルにコピーします。
自動配備を有効にしている場合は、Web サービスがサーバーに配備されます。サーバーが実行されていない場合は、サーバーを起動すると Web サービスが自動的に配備されます。
サービスをテストするには、Web サービスノードを展開してオペレーションを表示します。「hello:String」ノードを右クリックし、「Test Operation in Browser」を選択します。
ブラウザが開き、独自の変数のテスト値が表示されます。テスト値は URL に付加されます。
URL 内の変数値を変更し、Enter キーを押します。テスト結果も変わります。
Web サービスのオペレーションの変更
Web サービスのオペレーションを変更するには、プロジェクト内の Java ファイルを編集します。Web サービス内のオペレーションも同時に変わります。単純な add メソッドを次のように HelloAxisWorld.java に追加します。
public class HelloAxisWorld {
/** Sample method
*/
public String hello(String name) {
return "Hello "+name;
}
public int add(int x, int y) {
return x+y;
}
}
Java ファイルを保存すると、オペレーションが Web サービスのサブノードとして表示されます。
Web サービスを再配備し、それを「Axis2 Web サービスの配備およびテスト 」で説明されているようにテストします。
その他の課題
有益なアイデアをいくつか紹介します。
関連項目
NetBeans IDE を使用した Web サービスの作成および使用の詳細については、次のリソースを参照してください。
nbj2ee
@
netbeans.org
メーリングリスト に登録することによって、NetBeans IDE Java EE 開発機能に関するご意見やご提案を送信したり、サポートを受けたり、最新の開発情報を入手したりできます。