ステップ8.リクエストを処理する

最初のリクエストを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オブジェクトを使用してサーブレットに返します。また、サービス呼出し時に例外がスローされた場合は、例外の詳細情報も送信します。