bea ホーム | 製品 | dev2dev | support | askBEA
BEA Logo Tuxedo
 ドキュメントのダウンロード   サイトマップ   用語集 
検索
0

WebLogic Server での Jolt の使用

 Previous Next Contents View as PDF  

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

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

ユーザがフォームに入力したテキストは、登録済みの WebLogic HTTP サーブレットで処理される HTTP POST メソッドによって WebLogic Server に返されます。このサーブレットは、BEA 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 2000 システムでは %TUXDIR%¥samples¥atmi¥simpapp (TUXDIR は Tuxedo のホーム・ディレクトリ) にあります。

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

 


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

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

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

手順 1. 準備作業を行う

  1. クライアント・マシンにインストールされているブラウザが以下のいずれかであることを確認します。

  2. クライアント・マシンは、Tuxedo 環境への接続に使用する WebLogic Server にネットワーク接続されている必要があります。

  3. Tuxedo とサンプル・プログラム simpapp を設定して起動します。

  4. サーバ側の simpapp アプリケーションを起動する方法については、Tuxedo のマニュアルを参照してください。TOUPPER サービスが使用可能であることを確認します。

  5. Jolt サーバ を設定します。Jolt サーバの構成方法に関する情報については、『BEA Jolt』を参照してください。

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

手順 2. WebLogic Server を起動する

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

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

手順 3. WebLogic Server でサーブレットを設定する

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

  1. WebLogic ドキュメントのルート・ディレクトリに simpapp.html ページをコピーします。

    デフォルトでは、WebLogic Server の ¥config¥mydomain¥applications¥simpapp ディレクトリになります。WebLogic に組み込まれた HTTP サーバは、このディレクトリで HTML ページとその他の MIME の種類を検索します。

  2. ブラウザに次のアドレスを入力して、WebLogic Server の Administration Console を起動します。

    http://hostname:listenport#/console

  3. コンソールの左側のフレームで [サービス] フォルダを開き、Jolt フォルダをクリックします。右側のフレームに、ドメイン内で定義されたすべての Jolt 接続プールを示す Jolt [接続プール] テーブルが表示されます。

  4. [新しい Jolt Connection Pool のコンフィグレーション] をクリックします。右側のフレームに、新しい接続プールを設定するためのタブ付きのページが表示されます。

  5. [一般] タブに次の情報を入力します。

    1. [名前]、[最小プールサイズ]、[最大プールサイズ]、および [タイムアウト] 属性フィールドに値を入力します。

    2. [セキュリティ コンテキストを有効化] チェックボックスをオンにして、セキュリティ・コンテキストを有効にします。これにより、セキュリティ情報が WebLogic Server 環境から Tuxedo 環境に複製転送されます。

    3. [作成] をクリックすると、[名前] フィールドに入力した名前で接続プールのインスタンスが作成されます。左側のフレームの Jolt ノードの下に新しいインスタンスが追加されます。

  6. [アドレス] タブと [ユーザ] タブをクリックして確認し、フィールドの値を変更するか、デフォルト値を使用して、[適用] を クリックします。変更内容が保存されます。

  7. [対象] タブをクリックして、Jolt 接続プールを起動する使用可能なサーバを選択します。

  8. 左側のフレームで、[デプロイメント] フォルダの下にある [起動と停止] フォルダをクリックします。右側のフレームに [起動と停止] テーブルが表示され、ドメイン内で定義されているすべてのスタートアップ・クラスが示されます。

  9. [新しい Startup Class のコンフィグレーション] をクリックします。右側のフレームにタブ付きのダイアログ・ボックスが表示されます。次の手順を実行して新しいスタートアップ・クラスを設定します。

    1. [名前]、[クラス名]、および [引数] 属性フィールドに値を入力します。

    2. 障害が発生した場合に WebLogic Server を起動しないようにするには、[失敗したらサーバを起動しない] チェックボックスをオンにします。

    3. [クラス名] に次の名前を入力します。 bea.jolt.pool.servlet.weblogic.PoolManagerStartUp
      このスタートアップ・クラスには引数はありません。

    4. [作成] をクリックすると、[名前] フィールドに入力した名前でスタートアップ・クラスのインスタンスが作成されます。左側のフレームの [起動と停止] フォルダに新しいインスタンスが追加されます。

  10. 次の手順を実行して、simpapp サーブレットを Web アプリケーションとして登録します。

    1. コンソールの左側のフレームで [デプロイメント] フォルダを開き、[Web アプリケーション] アイコンをクリックします。

    2. [新しい Web アプリケーションをインストール] をクリックし、[アプリケーションのアップロードとインストール] ページを表示します。

    3. 手順 1 で、simpapp サーブレットのインストール先としてデフォルトのディレクトリを使用するか、別のディレクトリを選択します。

    4. 手順 2 で、simpapp サーブレットへのパスを入力するか、[参照] を使用して選択し、[Upload] ボタンをクリックします。

      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 ファイルをコンパイルします。
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 は次のとおりです。
    http://localhost:port/simpapp/simpapp.html

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

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

    図 C-1 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 に示すようなページが生成されます。

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


 


 

 

Back to Top Previous Next
Contact e-docsContact BEAwebmasterprivacy