|
この例では、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
サンプル ディレクトリには、次のファイルが置かれています。
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
を設定するには、次の手順に従います。
simpapp
を設定して起動します。 TOUPPER
サービスが使用可能であることを確認します。 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
host
と port
は、Jolt サーバ リスナ (JSL) のホスト名とポート番号です。simpapp.rep
は、Oracle Jolt によって提供されるバルク ローダ ファイルで、次のいずれかの場所にあります。
CLASSPATH
が適切に設定されていることを確認します。WebLogic Server のクラス ライブラリには、このサンプル プログラムを実行するために必要な次の 3 つの .jar
ファイルがあります。
Windows 2003 システムを使用している場合、[スタート] メニューから WebLogic Server を起動できます。それ以外の場合は、WebLogic Server のルート ディレクトリのコマンドラインで startWebLogic
スクリプトを使用します。
WebLogic Server の起動方法の詳細については、『Oracle WebLogic Server 管理者ガイド』の「WebLogic Server の起動と停止」を参照してください。
Jolt 接続プールと、WebLogic Server 6.0 以降のスタートアップ クラスの設定は、Administration Console で行います。
simpapp.html
ページをコピーします。
デフォルトでは、WebLogic Server の \config\mydomain\applications\simpapp
ディレクトリになります。WebLogic に組み込まれた HTTP サーバは、このディレクトリで HTML ページとその他の MIME の種類を検索します。
http://hostname:listenport#/console
bea.jolt.pool.servlet.weblogic.PoolManagerStartUp
simpapp
サーブレットを Web アプリケーションとして登録します。simpapp
サーブレットのインストール先としてデフォルトのディレクトリを使用するか、別のディレクトリを選択します。simpapp
サーブレットへのパスを入力するか、[参照] を使用して選択し、[Upload] ボタンをクリックします。
simpapp
サーブレットが WebLogic に Web アプリケーションとして登録され、Deployments¥Web Applications フォルダの下にアイコンが表示されます。
Jolt セッション プールを起動するには、WebLogic Server を停止して再起動する必要があります。WebLogic Server の再起動方法については、『WebLogic Server 管理者ガイド』の「WebLogic Server の起動と停止」を参照してください。
WebLogic Server を再起動したら、次の手順を実行して SimpAppServlet
ファイルをコンパイルします。
\config\mydomain\applications\simpapp
に、新しい WEB-INF
ディレクトリを作成します。\samples\jolt\wls\servlet\
から新しい WEB-INF
ディレクトリに web.xml
ファイルをコピーします。SimpAppServlet.java
ファイルをコンパイルします。javac -d %WL.HOME%¥config¥mydomain¥applications¥simpapp¥WEB-INF¥classes SimpAppServlet.java
フォームが正しく表示されない場合は、simpapp.html
ファイルが WebLogic ドキュメントのルート ディレクトリにあることを確認してください。
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
に渡されます。
最初の要求を 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
オブジェクトを使用してサーブレットに返します。また、サービス呼び出し時に例外が送出された場合は、例外の詳細情報も送信します。
最後の手順では、サービス呼び出しの結果を含む 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 に示すようなページが生成されます。