|
この例では、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サンプル・プログラムは簡単に設定できます。まず、simpapp.htmlページをWebLogic Serverから起動します。simpapp.htmlページは、文字列入力用のテキスト・フィールドを含むHTMLフォームをロードします。文字列を入力して「POST」ボタンをクリックし、この文字列を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以降のスタートアップ・クラスの設定は、管理コンソールで行います。
simpapp.htmlページをコピーします。 デフォルトでは、WebLogic Serverの\config\mydomain\applications\simpappディレクトリになります。WebLogicに組み込まれたHTTPサーバーは、このディレクトリでHTMLページとその他のMIMEの種類を検索します。
http://hostname:listenport#/console
simpappサーブレットをWebアプリケーションとして登録します。simpappサーブレットのインストール先としてデフォルトのディレクトリを使用するか、別のディレクトリを選択します。simpappサーブレットへのパスを入力するか、「参照」を使用して選択し、「アップロード」ボタンをクリックします。 simpappサーブレットがWebLogicにWebアプリケーションとして登録され、Deployments¥Web Applicationsフォルダの下にアイコンが表示されます。
Joltセッション・プールを起動するには、WebLogic Serverを停止して再起動する必要があります。WebLogic Serverの再起動方法については、『Oracle 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.javasimpapp.htmlファイルのURLを入力します。たとえば、デフォルトのURLは次のとおりです。 http://localhost:port/simpapp/simpapp.html localhostはWebLogic Serverのホスト名、portはWebLogic Serverがログイン・リクエストをリスニングするポートです。
図B-1に示すようなページが表示されます。
フォームが正しく表示されない場合は、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セッション・プールの取得方法を示しています。
// Get the "simpapp" session pool
ServletSessionPool session =
(ServletSessionPool) b_mgr.getSessionPool("simpapp");
呼び出されるTuxedoサービスは非表示フィールドで識別され、リクエスト・オブジェクトから取得されます。次のコードでサービス名パラメータを取得します。
String svcnm[] = req.getParameterValues("SVCNAME"); 単一の値を含む文字列配列のSVCNAMEフィールドの値を取得します。ここでは、配列の最初の要素のみを使用します。フォームのSVCNAME隠し表示に設定された値は、TOUPPERです。これは、サーブレットが呼出すTuxedoサービス名で、次のようにcall()メソッドに渡されます。
// Invoke a service and get the result.
result = session.call(svcnm[0], req);
サンプル・プログラムのsessionオブジェクトは、HttpServletRequestオブジェクトを直接受け入れることが可能なServletSessionPoolです。このオブジェクトは、内部でデータを変換し、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に示すようなページが生成されます。

|