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サービスが構築できる内容となっています。

目次

  1. 9i JDeveloperを入手しよう
  2. 9i JDeveloperを起動しよう
  3. ワークスペース・プロジェクトの作成
  4. EJBコンポーネントの作成
  5. Oracle 9iAS Containers for J2EE(OC4J)の起動
  6. 9i JDeveloperからOC4Jへの接続
  7. Webサービス化するEJBコンポーネントを配布(deploy)する
  8. 9i JDeveloperを使ったプロキシークラス(proxy class)の生成
  9. メインメソッドの作成とWebサービスの実行
  10. 製品情報、お問い合わせ先

 

1. 9i JDeveloperを入手しよう

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/

 

2. 9i JDeveloperを起動しよう

[目次に戻る]

ダウンロードが完了しましたらインストール(展開)します。インストール方法など詳細なドキュメントはダウンロードファイルの中に含まれていますのでご参照ください。インストールが完了しましたら、以下のファイルを実行します。

<JDEV_HOME>:            9i JDeveloperをインストール(展開)したディレクトリー

ここからはWindows環境で実行した場合を前提に説明していきます。尚、Linuxでも同様に行えることが確認されています。

9i JDeveloperを起動すると以下の画面が表示されます。

 

 

3. ワークスペース・プロジェクトの作成

[目次に戻る]

9i JDeveloperは、分散開発環境を並行して進めるための機能を提供します。プロジェクトを開発単位として、ワークスペースで複数のプロジェクトをまてめることができます。ワークスペースでまとめることで、関連性のないプロジェクトを同時に行うことができます。ではワークスペースとプロジェクトを作成しましょう。

左側のシステム・ナビゲータの「ワークスペース」を右クリックし「新規のワークスペース」を選択します。

 

次に、以下の画面がポップアップされますので、ワークスペース名を指定します。ここではそのままの名前を使いますので「OK」を押してください。

 

次にプロジェクト名を指定します。ここでもそのままの名前を使いますので、「OK」を押してください。

 

 

するとシステム・ナビゲータに"project1.jpr"が作成されます。そこにカーソルを合わせて右クリックを行い、「プロジェクトの設定」を選択します。

 

すると以下の画面がポップアップされます。この画面を用いてデフォルトのパッケージ名を変更することができます。ここではそのままの設定 "mypackage1" を用いますので、「OK」を押してください。

 

 

これで、ワークスペース"Workspace1.jws"、プロジェクト"Project1.jpr"の設定が終了しました。

 

 

4. EJBコンポーネントの作成

[目次に戻る]

今回は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サービスの設定が完了しました。

 

 

5. Oracle9iAS Containers for J2EE(OC4J)の起動

[目次に戻る]

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が起動されました。

 

 

6. 9i JDeveloperからOC4Jへの接続

[目次に戻る]

次に、9iJDeveloperからWebサービスとして公開するEJBコンポーネントをOC4Jへ配布できるように、アプリケーション・サーバー接続の設定を行います。

システム・ナビゲータの「接続」を右クリックし「アプリケーション・サーバー接続の作成........」を選択します。

 

 

接続ウィザード初期画面がポップアップされるので「次へ」を押します。以下の画面が表示されましたら接続名を指定します。

ここでは"OC4J"と入力します。接続タイプはそのままで結構ですので「次へ」を押してください。

 

ここで、5.で設定したOC4Jをインストールしたときに設定したパスワードを入力します。パスワードを変更されていない方は"oracle"と入力することになります。入力したら「次へ」を押します。

 

 

次に、OC4Jのホスト名を入力します。9iJDeveloperがインストールされているマシンを使う場合は以下のように"ormi://localhost/"と入力してください。

変更しましたら「次へ」を押します。

 

 

最後に接続確認を行います。「接続のテスト」を押して接続が成功したことを確認してください。接続できたことが確認されましたら、「終了」ボタンを押して終了してください。

 

 これでEJBを実行する環境が整いました。

 

 

7. Webサービス化するEJBコンポーネントを配布(deploy)する。

[目次に戻る]

左上のシステム・ナビゲータの"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に配布が完了しました。以下のメッセージが出力されます。

-----------------------ログ・メッセージ-------------------------------------
EJB .jarファイルをC:\download\jdev9i_eap2\jdev\mywork\Workspace1\Project1\ejb1.jarに作成しました。
WARファイルをC:\download\jdev9i_eap2\jdev\mywork\Workspace1\Project1\WebServices.warに作成しました。
EARファイルをC:\download\jdev9i_eap2\jdev\mywork\Workspace1\Project1\Workspace1-Project1-WS.earへ出力しました。
Oracle9iASの管理ツールを呼出し中...
c:\jdk1.3.1_01\jre\bin\javaw.exe  -jar C:\download\jdev9i_eap2\j2ee\home\admin.jar ormi://localhost/ admin ....
Auto-unpacking C:\download\jdev9i_eap2\j2ee\home\applications\Workspace1-Project1-WS\WebServices.war....
Copying default deployment descriptor from archive at C:\download\jdev9i_eap2\j2ee\home\applications\....
Auto-deploying Workspace1-Project1-WS (New server version detected)...
Copying default deployment descriptor from archive at C:\download\jdev9i_eap2\j2ee\home\applications\
Oracle9iAS管理ツールの終了ステータス(-deploy): 0
c:\jdk1.3.1_01\jre\bin\javaw.exe -jar C:\download\jdev9i_eap2\j2ee\home\admin.jar ormi://localhost/ admin ....
Oracle9iAS管理ツールの終了ステータス(-bindWebApp): 0
----  配布が完了  ----    2002/05/25 20:42:07

 

配布されたことは以下の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サービスをリクエストする設定をしましょう。

 

 

8. 9i JDeveloperを使ったプロキシークラス(proxy class)の生成

[目次に戻る]

Webサービスをリクエストするにはプロキシークラスが必要です。9i JDeveloperではWSDLファイルをもとにプロキシークラスを生成することができます。もちろん、Web上に公開されているWSDLファイルでも可能です。例えば、XMETHODSに公開されているWSDLファイルを使ってプロキシークラスを作ることができます。eBayWSDLファイルからプロキシークラスを生成し、オークション情報(価格)を取り出すことも可能です。ここでは、先程生成されたWSDLファイルを利用します。

新しくプロジェクトを作成します。

 

 

この設定のまま「OK」を押して、"Project2.jpr"を作成します。

 

 作成された左上のシステム・ナビゲータの"project2.jpr"を右クリックし「新規」ボタンを押します。ポップアップした画面のカテゴリで「Web Service」を選び、項目で「Web Service Stub/Skelton」を選択し「OK」を押します。。

 

 

ここで、Webサービス・スタブ/スケルトン・ウィザード初期画面がポップアップするので「次へ」を押します。

すると以下のWebサービスのスタブ/スケルトンに必要なWSDLファイルを指定する画面が表示されます。ここで、「参照」ボタンを押します。

 

ここで、3.で作成されたWSDLファイルを指定し「開く」を押します。ここでは、以下のディレクトリを参照してください。

 

WSDLファイルを指定したら、生成オプションをデフォルトでクリックされている「クライアント・サイド・スタブの生成」とし、「次へ」を押します。

 

利用できるサービスが一覧されます。ここで終了を押すと、プロキシークラス(スタブ)が生成されます。

 

以下のプロキシークラス(スタブ)が自動生成されます。

 

 

9. メインメソッドの作成とWebサービスの実行

[目次に戻る]

プロキシークラスだけでは、プログラムを動かすことはできませんので、メインメソッドを作成します。

"project2.jpr"を右クリックして、「新規クラス」を選択します。(注:「新規」ではありません。)

 

クラスのオプション属性は「public」と「mainメソッドの生成」をチェックします。

ここではクラスの名前を"HelloMain"と入力します。

 

コードのテンプレートが生成されます。

ここで、プログラムを以下のように修正します。

プログラミングが苦手な方は、以下の文字をカット&ペーストして貼り付けてください。

    package mypackage2;
    public class HelloMain
    {
	    public static void main(String[] args) throws Exception
{ HelloMain helloMain = new HelloMain(); HelloWorldEJBBeanStub proxy = new HelloWorldEJBBeanStub(); System.out.println(proxy.hello()); } }

  

修正したら、システム・ナビゲータの"HelloMain.java"を右クリックして、「HelloMain.javaの実行」を選びコンパイルし実行します。

-------------------------ログ・メッセージ--------------------------------------
C:\jdk1.3.1_01\bin\javaw.exe -ojvm -classpath C:\download\jdev9i_eap2........ Hello World
プロセスが終了コード0で終了しました。

これでWebサービスの構築は終了です。お疲れ様でした。

余裕のある方はApache Axisに付属しているモニタリングツール(TCPMonitor)を利用して確認してみましょう。

"Hello World"が返されていることを確認できます。

 

 

10. 製品情報、お問い合わせ先

[目次に戻る]

オラクル製品の技術資料、試用版ダウンロード、掲示板(Forum)については、技術サイトであるOracle Technology Networkをご利用ください。Oracle Technology Network(OTN)は、会員が12万人(2002年5月現在)を超える技術者専用情報サイトです。登録することにより無償で利用できます。まだ、登録されていない方はこの機会に是非、登録してみてください。

オラクル製品の一般的な情報については、日本オラクル公式ホームページをご利用ください。