bea ホーム | 製品 | dev2dev | support | askBEA |
![]() |
![]() |
|
![]() |
e-docs > Tuxedo > WebLogic Server での Jolt の使用 > 簡単なサーブレット・サンプル・プログラム |
WebLogic Server での Jolt の使用
|
簡単なサーブレット・サンプル・プログラム
この例では、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. 準備作業を行う
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 の起動方法の詳細については、『BEA WebLogic Server 管理者ガイド』の「WebLogic Server の起動と停止」を参照してください。
手順 3. WebLogic Server でサーブレットを設定する
Jolt 接続プールと、WebLogic Server 6.0 以降のスタートアップ・クラスの設定は、Administration Console で行います。
手順 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
フォームが正しく表示されない場合は、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 出力ストリームの結果例
![]() |
![]() |
![]() |
![]() |
||
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |