Oracle9i JDeveloperを使ってWebサービスを構築する方法
Oracle9i JDeveloperとは
ここでは、"Hello World"を返すWebサービスをほとんどプログラミングなしでEJBコンポーネントとして作成し、アプリケーションサーバーに配布する方法を解説します。
尚、アプリケーションサーバには9i JDeveloperに同梱されているServlet/JSP/EJBコンテナであるOC4J(Oracle9iAS Containers for J2EE)を用います。OC4Jは Oracle9i Application Server のJ2EE実行環境です。尚、J2EE準拠のアプリケーションサーバーであれば配布することが可能です。今回、Javaのプログラミングはほとんどありません。Javaが苦手な方でも簡単にWebサービスが構築できる内容となっています。
9i JDeveloperは、弊社のOTN(Oracle Technology Network)の以下のサイトからダウンロードできます。OTNは会員が12万人(2002年5月現在)を超える技術者専用情報サイトです。誰でも登録すれば無償で利用することができます。Oracle9iやJava/XML関連の技術を学ぶことができます。OTNに関する詳細な情報は9. 製品情報、お問い合わせ先をご覧ください。
http://otn.oracle.co.jp/products/itools/9i_jdev_eap/
ダウンロードが完了しましたらインストール(展開)します。インストール方法など詳細なドキュメントはダウンロードファイルの中に含まれていますのでご参照ください。インストールが完了しましたら、以下のファイルを実行します。
<JDEV_HOME>: 9i JDeveloperをインストール(展開)したディレクトリー
ここからはWindows環境で実行した場合を前提に説明していきます。尚、Linuxでも同様に行えることが確認されています。
9i JDeveloperを起動すると以下の画面が表示されます。
9i JDeveloperは、分散開発環境を並行して進めるための機能を提供します。プロジェクトを開発単位として、ワークスペースで複数のプロジェクトをまてめることができます。ワークスペースでまとめることで、関連性のないプロジェクトを同時に行うことができます。ではワークスペースとプロジェクトを作成しましょう。
左側のシステム・ナビゲータの「ワークスペース」を右クリックし「新規のワークスペース」を選択します。
次に、以下の画面がポップアップされますので、ワークスペース名を指定します。ここではそのままの名前を使いますので「OK」を押してください。
次にプロジェクト名を指定します。ここでもそのままの名前を使いますので、「OK」を押してください。
するとシステム・ナビゲータに"project1.jpr"が作成されます。そこにカーソルを合わせて右クリックを行い、「プロジェクトの設定」を選択します。
すると以下の画面がポップアップされます。この画面を用いてデフォルトのパッケージ名を変更することができます。ここではそのままの設定 "mypackage1" を用いますので、「OK」を押してください。
これで、ワークスペース"Workspace1.jws"、プロジェクト"Project1.jpr"の設定が終了しました。
今回はEJBコンポーネントをWebサービス化します。9i JDeveloperであればJavaクラスだけでなくEJBコンポーネントも簡単にWebサービス化できます。
まず、先程と同様にシステム・ナビゲータの"project1.jpr"を右クリックして、メニューから「新規」を選びます。(注:「新規クラス」ではありません)
すると以下の画面がポップアップします。ここで、カテゴリから「Enterprise JavaBeans」を選び、項目から「Stateless Session Bean」を選び、「OK」を押します。
ウィザード初期画面がポップアップしますので「次へ」を押してください。
すると以下の画面が表示されます。ここで、EJBコンポーネントの名前とタイプを設定します。ここでは名前を「HelloWorldEJB」と入力して「次へ」を押します。
ホーム・インターフェース/リモートインターフェースの名前を設定します。ここではそのままの名前を使いますので「次へ」を押します。
以下の画面が出ましたら、「終了」ボタンを押します。
自動的にEJBコンポーネントのスケルトンが作成されます。
では、次に文字列"Hellow World"を返すメソッドを作成してみましょう。
右下の「メソッド」タブを押します。ここで画面上部の「追加」ボタンを押します。
以下の画面がポップアップしまのでメソッド情報を変更します。まず、EJBメソッドタイプで「EJBインターフェース・メソッド」のチェックボックスをチェック、「リモート」もチェックします。メソッド情報のメソッド名は"hello"と入力します。ここで「OK」を押すとメソッドが追加されます。
では、実際に追加されたメソッドを確認しましょう。追加されたメソッドはSession Beanである"HelloWorldEJBBean.java"です。
システム・ナビゲータ内の"HelloWorldEJBBean.java"をダブルクリックして、プログラムコードを表示させてください。27行目からhelloメソッドが追加されていることを確認してください。
hello( )メソッドの詳細は記述されていないので"Hello World"を返すように以下に変更します。
public String hello()
{ return "Hello World"; } |
|||
"HelloWorldEJBBean"を右クリックして「メイク」ボタンを押してコンパイルします。
次に、作成したEJBコンポーネントを「Webサービス公開ウィザード」を用いて公開します。
左上のシステム・ナビゲータの"project1.jpr"を右クリックし「新規」ボタンを押します。(注:「新規クラス」ではありません。)
ここで、カテゴリの「Web Services」を選び、項目の「Web Service」を選択し「OK」を押します。
ここでWebサービス公開ウィザード初期画面がポップアップするので「次へ」を押します。
すると以下の画面が表示されます。ここで公開するクラスを設定します。まず、「参照」ボタンを押します。
するとWebサービスとして公開するクラスを選択するブラウザが表示されます。パッケージ名である"mypackage1"の中の"impl"の"HelloWorldEJBBean"を選択し「OK」を押します。
また、以下の画面のように配布先は「Oracle J2EE Webサービス」を選択し「次へ」を押します。
ここではWebサービスとして公開するメソッドである"hello():java.lang.String"のチェックボックスにチェックをし「次へ」ボタンを押します。
以下の画面がでてきたら「終了」ボタンを押します。
名前空間の以下の警告がでますが、ここでは「はい」を押します。
これで、Webサービスとして公開するメソッドが指定されました。9iJDeveloperでは公開するときに自動的WSDLファイルが生成されます。
システム・ナビゲータに"HelloWorldEJBBean.wsdl"が作成されていることを確認してください。これで公開するWebサービスの設定が完了しました。
9iJDeveloperでは、Servlet/JSP/EJBコンテナであるスタンドアロンのOC4Jが同梱されています。OC4Jは軽量でパフォーマンスの高いコンテナが特徴です。Oracle9i Application ServerでのJ2EE実行環境を提供しています。このOC4JにWebサービス化するEJBコンポーネントを配布(Deploy)します。
まず、OC4Jの起動をコマンドプロンプトから行います。
コマンドプロンプトを開いて、以下のディレクトリに移動します。
cd <JDEV_HOME>\j2ee\home
次にOC4Jのインストールします。
java -jar oc4j.jar -install
ここで、管理用のパスワードの設定をします。
例:ここでは"oracle"をパスワードとします。
Enter admin password to use: oracle
confirm admin passwod: oracle
OC4Jを起動します。
java -jar oc4j.jar
これで、OC4Jが起動されました。
次に、9iJDeveloperからWebサービスとして公開するEJBコンポーネントをOC4Jへ配布できるように、アプリケーション・サーバー接続の設定を行います。
システム・ナビゲータの「接続」を右クリックし「アプリケーション・サーバー接続の作成........」を選択します。
接続ウィザード初期画面がポップアップされるので「次へ」を押します。以下の画面が表示されましたら接続名を指定します。
ここでは"OC4J"と入力します。接続タイプはそのままで結構ですので「次へ」を押してください。
ここで、5.で設定したOC4Jをインストールしたときに設定したパスワードを入力します。パスワードを変更されていない方は"oracle"と入力することになります。入力したら「次へ」を押します。
次に、OC4Jのホスト名を入力します。9iJDeveloperがインストールされているマシンを使う場合は以下のように"ormi://localhost/"と入力してください。
変更しましたら「次へ」を押します。
最後に接続確認を行います。「接続のテスト」を押して接続が成功したことを確認してください。接続できたことが確認されましたら、「終了」ボタンを押して終了してください。
これでEJBを実行する環境が整いました。
左上のシステム・ナビゲータの"project1.jpr"を右クリックし「新規」ボタンを押します。ポップアップした画面でカテゴリ「Deployment Profiles」を選び、項目「EJB JARファイル-J2EE EJBモジュール」を選択し「OK」を押します。
配布プロファイル名を指定します。ここでは"ejb1.deploy"のまま「保存」を押します。
JARファイルとEARファイルを設定する画面が出てきます。ここでもそのままの設定で「OK」を押します。
これで、EJBコンポーネントを配布する準備ができました。次に、先程設定したWebサービスの登録情報にEJBの情報を付加する必要があります。
そのためにはWebサービス公開用の配布プロファイルである"web.xml"を書き換える必要があります。
システム・ナビゲータ内の"WebServices.deploy"を右クリックし、「設定」を選びます。
ここで、「プロファイルの依存性」をクリックし、EJBコンポーネントの配布プロファイルと依存関係を結びます。具体的には右側の配布プロファイルではる"ejb1.deploy"のチェックボックスをチェックし「OK」を押します。
"web.xml"をダブルクリックして、以下の画面通りに<ejb-ref>~</ejb-ref>が新たに加わっているか確認してください。
では配布しましょう。 システム・ナビゲータの"WebServices.deploy"を右クリックし、「配布先」の「OC4J」を選択します。
これで、OC4Jに配布が完了しました。以下のメッセージが出力されます。
-----------------------ログ・メッセージ------------------------------------- |
|||
配布されたことは以下のURLで確認できます。
http://localhost:8888/Workspace1-Project1-context-root/mypackage1.impl.HelloWorldEJBBean
配布する際に自動的にWSDLが生成されますのでWSDLの確認も以下のURLで行うことができます。
http://localhost:8888/Workspace1-Project1-context-root/mypackage1.impl.HelloWorldEJBBean?wsdl
これで、Webサービスを提供する設定が完了しました。では生成されたWSDLファイルをもとにWebサービスをリクエストする設定をしましょう。
Webサービスをリクエストするにはプロキシークラスが必要です。9i JDeveloperではWSDLファイルをもとにプロキシークラスを生成することができます。もちろん、Web上に公開されているWSDLファイルでも可能です。例えば、XMETHODSに公開されているWSDLファイルを使ってプロキシークラスを作ることができます。eBayのWSDLファイルからプロキシークラスを生成し、オークション情報(価格)を取り出すことも可能です。ここでは、先程生成されたWSDLファイルを利用します。
新しくプロジェクトを作成します。
この設定のまま「OK」を押して、"Project2.jpr"を作成します。
作成された左上のシステム・ナビゲータの"project2.jpr"を右クリックし「新規」ボタンを押します。ポップアップした画面のカテゴリで「Web Service」を選び、項目で「Web Service Stub/Skelton」を選択し「OK」を押します。。
ここで、Webサービス・スタブ/スケルトン・ウィザード初期画面がポップアップするので「次へ」を押します。
すると以下のWebサービスのスタブ/スケルトンに必要なWSDLファイルを指定する画面が表示されます。ここで、「参照」ボタンを押します。
ここで、3.で作成されたWSDLファイルを指定し「開く」を押します。ここでは、以下のディレクトリを参照してください。
WSDLファイルを指定したら、生成オプションをデフォルトでクリックされている「クライアント・サイド・スタブの生成」とし、「次へ」を押します。
利用できるサービスが一覧されます。ここで終了を押すと、プロキシークラス(スタブ)が生成されます。
以下のプロキシークラス(スタブ)が自動生成されます。
プロキシークラスだけでは、プログラムを動かすことはできませんので、メインメソッドを作成します。
"project2.jpr"を右クリックして、「新規クラス」を選択します。(注:「新規」ではありません。)
クラスのオプション属性は「public」と「mainメソッドの生成」をチェックします。
ここではクラスの名前を"HelloMain"と入力します。
コードのテンプレートが生成されます。
ここで、プログラムを以下のように修正します。
プログラミングが苦手な方は、以下の文字をカット&ペーストして貼り付けてください。
package mypackage2; public class HelloMain { public static void main(String[] args) throws Exception |
|||
修正したら、システム・ナビゲータの"HelloMain.java"を右クリックして、「HelloMain.javaの実行」を選びコンパイルし実行します。
-------------------------ログ・メッセージ-------------------------------------- |
|||
これでWebサービスの構築は終了です。お疲れ様でした。
余裕のある方はApache Axisに付属しているモニタリングツール(TCPMonitor)を利用して確認してみましょう。
"Hello World"が返されていることを確認できます。
オラクル製品の技術資料、試用版ダウンロード、掲示板(Forum)については、技術サイトであるOracle Technology Networkをご利用ください。Oracle Technology Network(OTN)は、会員が12万人(2002年5月現在)を超える技術者専用情報サイトです。登録することにより無償で利用できます。まだ、登録されていない方はこの機会に是非、登録してみてください。
ホームページ http://otn.oracle.co.jp/
製品技術情報 http://otn.oracle.co.jp/products/index.html
製品試用版ダウンロード http://otn.oracle.co.jp/software/index.html
オラクル製品の一般的な情報については、日本オラクル公式ホームページをご利用ください。
ホームページ http://www.oracle.co.jp/
製品・サービスに関する
お問い合わせ情報 http://www.oracle.co.jp/misc/index.html