Oracle WebLogic Server での Oracle Jolt の使用

     前  次    新しいウィンドウで目次を開く     
ここから内容の開始

簡単なサーブレット サンプル プログラム

この例では、Oracle Jolt を使用して WebLogic サーブレットから Oracle Tuxedo に接続する方法を示します。また、WebLogic Server を使用して、標準的な Web ブラウザに HTML フォームのフロント エンドを表示します。

ユーザがフォームに入力したテキストは、登録済みの WebLogic HTTP サーブレットで処理される HTTP POST メソッドによって WebLogic Server に返されます。このサーブレットは、Oracle Jolt を使用して Tuxedo サービスを呼び出します。サーブレットが受信したテキストは Tuxedo サービスに送信され、サーブレットに返される前に大文字に変換されます。フォームは、サーブレットによって動的に生成される HTML ページにコンパイルされ、Web ブラウザに返されて、オリジナルのテキストが大文字で表示されます。

ここでは、以下の内容について説明します。

 


サンプル プログラムの構成要素と前提条件

Jolt for WebLogic Server のサンプル プログラム simpapp は、次の 2 つの要素で構成されています。

Jolt サーブレットのサンプル プログラム simpapp のソース コードは、Tuxedo の /samples/jolt/wls/servlet/ ディレクトリにあります。

simpapp サンプル ディレクトリには、次のファイルが置かれています。

ファイル名
説明
SimpAppServlet.java
Tuxedo に対する呼び出しを発行し、結果の HTML ページを返すサンプル ソース コード
simpapp.html
ユーザ入力用の HTML フォーム
simpapp.rep
リポジトリ バルク ロード用の REP ファイル
web.xml
Web アプリケーション用のコンフィグレーション XML ファイル

simpapp アプリケーション サービスの Tuxedo サーバサイドのソース コードの一覧は、UNIX システムでは $TUXDIR/samples/atmi/simpapp、Windows 2003 システムでは %TUXDIR%¥samples¥atmi¥simpapp (TUXDIR は Tuxedo のホーム ディレクトリ) にあります。

このサンプル プログラムを実行するには、以下の事項に精通している必要があります。

 


サンプル プログラムを使用する

サンプル プログラム simpapp は、WebLogic Server から simpapp.html ページを起動するだけで、簡単に実行できます。simpapp.html ページを起動すると、データ入力用のテキスト フィールドを含む HTML フォームがロードされます。文字列を入力して [Post] ボタンをクリックすると、ポスト要求として文字列が送信されます。SimpAppServlet は、ユーザが入力した文字列を Jolt for WebLogic クラス ライブラリで使用可能な形式に変換し、Tuxedo の TOUPPER サービスに対する要求をディスパッチします。このサービスは、文字列を大文字に変換してブラウザに表示します。

サーブレット サンプル プログラム simpapp を設定するには、次の手順に従います。

手順 1. 準備作業を行う

  1. クライアント マシンにインストールされているブラウザが以下のいずれかであることを確認します。
    • Netscape Communicator 4.7 以上
    • Internet Explorer 5.0 以上
  2. クライアント マシンは、Tuxedo 環境への接続に使用する WebLogic Server にネットワーク接続されている必要があります。
  3. Tuxedo とサンプル プログラム simpapp を設定して起動します。
  4. サーバサイドの simpapp アプリケーションを起動する方法については、Tuxedo のマニュアルを参照してください。TOUPPER サービスが使用可能であることを確認します。
  5. Jolt サーバを設定します。Jolt サーバの構成方法に関する情報については、『Oracle Jolt』を参照してください。
    • Jolt サーバ リスナ (JSL) に関連付けられたホスト名とポート番号を書き留める。
    • Jolt リポジトリのバルク ローダ ファイルを使用して、Jolt リポジトリで TOUPPER サービスが定義されていることを確認する。
    • simpapp サンプル ディレクトリには、TOUPPER サービス定義を含む simpapp.rep ファイルがあります。システム管理者は、Jolt リポジトリのバルク ローダを使用して、このサービス定義を Tuxedo サーバ上の既存の Jolt リポジトリに追加する必要があります。Jolt リポジトリのバルク ローダ パッケージは、Tuxedo の Jolt コンポーネントに同梱されています。インストール方法の詳細については、『Oracle Jolt』を参照してください。

      次のサンプル コードでは、Tuxedo サーバ上で Jolt のバルク ローダを使用して TOUPPER サービス定義を追加します。

      $ java bea.jolt.admin.jbld //host:port simpapp.rep

      hostport は、Jolt サーバ リスナ (JSL) のホスト名とポート番号です。simpapp.rep は、Oracle Jolt によって提供されるバルク ローダ ファイルで、次のいずれかの場所にあります。

      $TUXDIR/samples/jolt/wls/servlet/ (UNIX の場合)

      %TUXDIR%¥samples¥jolt¥wls¥servlet¥ (Windows 2003 の場合)

  6. インストール時に CLASSPATH が適切に設定されていることを確認します。WebLogic Server のクラス ライブラリには、このサンプル プログラムを実行するために必要な次の 3 つの .jar ファイルがあります。
    • jolt.jar
    • joltjse.jar
    • joltwls.jar.

手順 2. WebLogic Server を起動する

Windows 2003 システムを使用している場合、[スタート] メニューから WebLogic Server を起動できます。それ以外の場合は、WebLogic Server のルート ディレクトリのコマンドラインで startWebLogic スクリプトを使用します。

WebLogic Server の起動方法の詳細については、『Oracle WebLogic Server 管理者ガイド』の「WebLogic Server の起動と停止」を参照してください。

手順 3. WebLogic Server でサーブレットをコンフィグレーションする

Jolt 接続プールと、WebLogic Server 6.0 以降のスタートアップ クラスの設定は、Administration Console で行います。

  1. WebLogic ドキュメントのルート ディレクトリに simpapp.html ページをコピーします。
  2. デフォルトでは、WebLogic Server の \config\mydomain\applications\simpapp ディレクトリになります。WebLogic に組み込まれた HTTP サーバは、このディレクトリで HTML ページとその他の MIME の種類を検索します。

  3. ブラウザに次のアドレスを入力して、WebLogic Server の Administration Console を起動します。
  4. http://hostname:listenport#/console

  5. コンソールの左側のフレームで [サービス] フォルダを開き、Jolt フォルダをクリックします。右側のフレームに、ドメイン内で定義されたすべての Jolt 接続プールを示す Jolt [接続プール] テーブルが表示されます。
  6. [新しい Jolt Connection Pool のコンフィグレーション] をクリックします。右側のフレームに、新しい接続プールを設定するためのタブ付きのページが表示されます。
  7. [一般] タブに次の情報を入力します。
    1. [名前]、[最小プールサイズ]、[最大プールサイズ]、および [タイムアウト] 属性フィールドに値を入力します。
    2. [セキュリティ コンテキストを有効化] チェックボックスをオンにして、セキュリティ コンテキストを有効にします。これにより、セキュリティ情報が WebLogic Server 環境から Tuxedo 環境に伝播されます。
    3. [作成] をクリックすると、[名前] フィールドに入力した名前で接続プールのインスタンスが作成されます。左側のフレームの Jolt ノードの下に新しいインスタンスが追加されます。
  8. [アドレス] タブと [ユーザ] タブをクリックして確認し、フィールドの値を変更するか、デフォルト値を使用して、[適用] をクリックします。変更内容が保存されます。
  9. [対象] タブをクリックして、Jolt 接続プールを起動する使用可能なサーバを選択します。
  10. 左側のフレームで、[デプロイメント] フォルダの下にある [起動と停止] フォルダをクリックします。右側のフレームに [起動と停止] テーブルが表示され、ドメイン内で定義されているすべてのスタートアップ クラスが示されます。
  11. [新しい Startup Class のコンフィグレーション] をクリックします。右側のフレームにタブ付きのダイアログ ボックスが表示されます。次の手順を実行して新しいスタートアップ クラスを設定します。
    1. [名前]、[クラス名]、および [引数] 属性フィールドに値を入力します。
    2. 障害が発生した場合に WebLogic Server を起動しないようにするには、[失敗したらサーバを起動しない] チェックボックスをオンにします。
    3. [クラス名] に次の名前を入力します。bea.jolt.pool.servlet.weblogic.PoolManagerStartUp
      このスタートアップ クラスには引数はありません。
    4. [作成] をクリックすると、[名前] フィールドに入力した名前でスタートアップ クラスのインスタンスが作成されます。左側のフレームの [起動と停止] フォルダに新しいインスタンスが追加されます。
  12. 次の手順を実行して、simpapp サーブレットを Web アプリケーションとして登録します。
    1. コンソールの左側のフレームで [デプロイメント] フォルダを開き、[Web アプリケーション] アイコンをクリックします。
    2. [新しい Web アプリケーションをインストール] をクリックし、[アプリケーションのアップロードとインストール] ページを表示します。
    3. 手順 1 で、simpapp サーブレットのインストール先としてデフォルトのディレクトリを使用するか、別のディレクトリを選択します。
    4. 手順 2 で、simpapp サーブレットへのパスを入力するか、[参照] を使用して選択し、[Upload] ボタンをクリックします。
    5. simpapp サーブレットが WebLogic に Web アプリケーションとして登録され、Deployments¥Web Applications フォルダの下にアイコンが表示されます。

手順 4. WebLogic Server を停止して再起動する

Jolt セッション プールを起動するには、WebLogic Server を停止して再起動する必要があります。WebLogic Server の再起動方法については、『WebLogic Server 管理者ガイド』の「WebLogic Server の起動と停止」を参照してください。

手順 5. サーブレットをコンパイルする

WebLogic Server を再起動したら、次の手順を実行して SimpAppServlet ファイルをコンパイルします。

  1. WebLogic ドキュメントのルート ディレクトリ \config\mydomain\applications\simpapp に、新しい WEB-INF ディレクトリを作成します。
  2. Tuxedo のインストール ディレクトリ \samples\jolt\wls\servlet\ から新しい WEB-INF ディレクトリに web.xml ファイルをコピーします。
  3. 次のコードで SimpAppServlet.java ファイルをコンパイルします。
  4. javac -d %WL.HOME%¥config¥mydomain¥applications¥simpapp¥WEB-INF¥classes SimpAppServlet.java

    これにより、必要な Java クラスも WEB-INF¥classes ディレクトリにコピーされます。

手順 6. simpapp.html フォームを表示する

  1. ブラウザを開きます。
  2. simpapp.html ファイルの URL を入力します。たとえば、デフォルトの URL は次のとおりです。
  3. http://localhost:port/simpapp/simpapp.html

    localhost は WebLogic Server のホスト名、port は WebLogic Server がログイン要求をリスンするポートです。

    図 B-1 に示すようなページが表示されます。

    図 B-1 simpapp.html の例


    simpapp.html の例

フォームが正しく表示されない場合は、simpapp.html ファイルが WebLogic ドキュメントのルート ディレクトリにあることを確認してください。

手順 7. フォームのデータをブラウザからポストする

HTML ページのテキスト フィールドにデータを入力したら、[POST] ボタンをクリックして送信します。入力したデータとともに、その他のパラメータも WebLogic Server で実行されている simpapp サーブレット クラスに送信されます。

simpapp.html ファイルの HTML フォームに関する部分を以下に示します。

  <form name="simpapp" action="simpapp" method="post">
<input type="hidden" name="SVCNAME" value="TOUPPER">

<table bgcolor=#dddddd border=1>
<tr>
<td>Type some text here and click the Post button:
<input type="text" name="string">
</td></tr>

<tr>
<td align=center><input type="submit" value="Post!">
</td></tr>
</table>
</form>

この HTML フォームでは、ユーザ入力フィールドと非表示フィールドの 2 つの入力フィールドが指定されています。この例では、非表示フィールドの値により、起動する Tuxedo サービスの名前が指定されます。Tuxedo サービスの名前を HTML ページに入れておくと便利ですが、セキュリティ上の理由から実運用環境では推奨できません。この HTML ページでは、非表示フィールドで別のサービス名を指定する HTTP リクエストを送信できます。

注意 : Tuxedo サービス名の大文字と小文字は区別されます。

WebLogic Server が HTTP フォーム要求を受信すると、WebLogic Server によって simpapp サーブレットの doPost() メソッドが起動し、フォームのデータが HttpServletRequest に渡されます。

手順 8. 要求を処理する

最初の要求を simpapp サーブレットに送信する前に、WebLogic が init() メソッドを呼び出してサーブレットを初期化します。次の形式で Jolt セッション プールが確立されます。

ServletSessionPoolManager b_mgr =
(ServletSessionPoolManager).SessionPoolManager.poolmanager;

次に、サーブレットの doPost() メソッドが実行されます。このメソッドには、WebLogic Server の起動時に作成された simpapp セッション プールからの接続を取得するコードが含まれます。次に示すコードの抜粋は、simpapp セッション プールの取得方法を示しています。

  // "simpapp" セッション プールを取得
ServletSessionPool session =
(ServletSessionPool) b_mgr.getSessionPool("simpapp");

呼び出される Tuxedo サービスは非表示フィールドで識別され、要求オブジェクトから取得されます。次のコードでサービス名パラメータを取得します。

  String svcnm[] = req.getParameterValues("SVCNAME");

単一の値を含む文字配列で [SVCNAME] フィールドの値を取得します。配列の最初の要素だけを使用します。フォームの [SVCNAME] 非表示フィールドに設定された値は TOUPPER です。これは、サーブレットが起動する Tuxedo サービスの名前で、次のコードによって call() メソッドに渡されます。

  // サービスを起動して結果を取得
result = session.call(svcnm[0], req);

この例のセッション オブジェクト ServletSessionPool は、HttpServletRequest オブジェクトを直接受け付けることができますが、内部的には、TOUPPER サービスのパラメータを含む Jolt DataSet オブジェクトにデータが変換されます。

注意 : TOUPPER サービスは、"STRING" という名前のパラメータを要求します。このパラメータは大文字と小文字が識別されるので、HTML フォームのテキスト フィールドには "STRING" が大文字で入力されていなければなりません。SVCNAME など、パラメータとして関連付けられていないその他のデータ フィールドにも注意が必要ですが、それによって Tuxedo サービスが中断されることはありません。

フォーム パラメータを使用してサービスに名前を付けると、サービス パラメータとして渡す必要がありません。サービス名は HttpServletRequest オブジェクトに含まれるので、自動的に渡されます。

TOUPPER サービスは、"STRING" パラメータのテキストを大文字に変換し、実行される呼び出しの結果を含む ServletResult オブジェクトを使用してサーブレットに返します。また、サービス呼び出し時に例外が送出された場合は、例外の詳細情報も送信します。

手順 9. クライアントに結果を返す

最後の手順では、サービス呼び出しの結果を含む HTML ページを作成して送信し、HttpResponse 出力ストリームによってクライアントに返します。大文字で表示される結果は、result.getValue() メソッドを使用して ServletResult オブジェクトから取得されます。

次の例は、ブラウザで表示可能な HTML ページでデータを返す簡単な方法を示しています。

  out.println("<p><center><font size=+1><b>"+
result.getValue("STRING", "")+
"</b></font></center><p><hr
width=80%>");

出力ストリームによって、図 B-2 に示すようなページが生成されます。

図 B-2 出力ストリームの結果例

出力ストリームの結果例


  ページの先頭       前  次