|
|
サンプル・プログラムを使用する
サンプル・プログラム simpapp は、WebLogic Server から simpapp.html ページを起動するだけで、簡単に実行できます。simpapp.html ページを起動すると、データ入力用のテキスト・フィールドを含む HTML フォームがロードされます。文字列を入力して [Post] ボタンをクリックすると、ポスト要求として文字列が送信されます。SimpAppServlet は、ユーザが入力した文字列を Jolt for WebLogic クラス・ライブラリで使用可能な形式に変換し、Tuxedo の TOUPPER サービスに対する要求をディスパッチします。このサービスは、文字列を大文字に変換してブラウザに表示します。
サーブレット・サンプル・プログラム simpapp を設定するには、次の手順に従います。
手順 1. 準備作業を行う
simpapp サンプル・ディレクトリには、TOUPPER サービス定義を含む simpapp.rep ファイルがあります。システム管理者は、Jolt リポジトリのバルク・ローダを使用して、このサービス定義を Tuxedo サーバ上の既存の Jolt リポジトリに追加する必要があります。Jolt リポジトリのバルク・ローダ・パッケージは、Tuxedo の Jolt コンポーネントに同梱されています。インストール方法の詳細については、『BEA Jolt』を参照してください。
次のコード例では、Tuxedo サーバ上で Jolt のバルク・ローダを使用して TOUPPER サービス定義を追加します。
$ java bea.joltadm.jbld //host:port simpapp.rep
host と port は、Jolt サーバ・リスナ (JSL) のホスト名とポート番号です。simpapp.rep は、BEA Jolt によって提供されるバルク・ローダ・ファイルで、次のいずれかの場所にあります。
$TUXDIR/samples/jolt/wls/servlet/ (UNIX の場合)
%TUXDIR%¥samples¥jolt¥wls¥servlet¥ (Windows 2000の場合)
手順 2. WebLogic Server を起動する
Windows 2000 システムを使用している場合、[スタート] メニューから WebLogic Server を起動できます。それ以外の場合は、WebLogic Server のルート・ディレクトリのコマンド行で startWebLogic スクリプトを使用します。
WebLogic Server の起動方法の詳細については、『WebLogic Server 管理者ガイド』の「WebLogic Server の起動と停止」を参照してください。
手順 3. WebLogic Server でサーブレットを設定する
Jolt 接続プールと、WebLogic Server 6.0 以降のスタートアップ・クラスの設定は、Administration Console で行います。
デフォルトでは、WebLogic Server の \config\mydomain\applications\simpapp ディレクトリになります。WebLogic に組み込まれた HTTP サーバは、このディレクトリで HTML ページとその他の MIME の種類を検索します。
http://hostname:listenport#/console
simpapp サーブレットが WebLogic に Web アプリケーションとして登録され、Deployments\Web Applications フォルダの下にアイコンが表示されます。
手順 4. WebLogic Server を停止して再起動する
Jolt セッション・プールを起動するには、WebLogic Server をシャットダウンして再起動する必要があります。WebLogic Server の再起動方法については、『WebLogic Server 管理者ガイド』の「WebLogic Server の起動と停止」を参照してください。
手順 5. サーブレットをコンパイルする
WebLogic Server を再起動したら、次の手順を実行して SimpAppServlet ファイルをコンパイルします。
javac -d %WL.HOME%\config\mydomain\applications\simpapp\WEB-INF\classes SimpAppServlet.java
これにより、必要な Java クラスも WEB-INF\classes ディレクトリにコピーされます。
手順 6. simpapp.html フォームを表示する
http://localhost:port/simpapp/simpapp.html
localhost は WebLogic Server のホスト名、port は WebLogic Server がログイン要求をリッスンするポートです。
図 B-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%>");
出力ストリームによって、Figure B-2 に示すようなページが生成されます。
出力ストリームの結果例
|
Copyright © 2001 BEA Systems, Inc. All rights reserved.
|