Oracle WebLogic ServerでのOracle Joltの使用

     前  次    新規ウィンドウで目次を開く    PDFとして表示 - 新規ウィンドウ  Adobe Readerを入手 - 新規ウィンドウ
コンテンツはここから始まります

単純なサーブレット・サンプル・プログラム

この例では、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サンプル・ディレクトリには、次のファイルが置かれています。

ファイル名
説明
SimpAppServlet.java
Tuxedoに対する呼出しを発行し、結果のHTMLページを戻すサンプル・ソース・コード
simpapp.html
ユーザー入力用のHTMLフォーム
simpapp.rep
リポジトリ・バルク・ロード用のREPファイル
web.xml
Webアプリケーション用の構成XMLファイル

simpappアプリケーション・サービスのTuxedoサーバー側のソース・コードの一覧は、UNIXシステムでは$TUXDIR/samples/atmi/simpapp、Windows 2003システムでは%TUXDIR%¥samples¥atmi¥simpapp (TUXDIRはTuxedoのホーム・ディレクトリ)にあります。

このサンプル・プログラムを実行するには、以下の事項に精通している必要があります。

 


サンプル・プログラムを使用する

simpappサンプル・プログラムは簡単に設定できます。WebLogic Serverからsimpapp.htmlページを起動するだけです。simpapp.htmlページは、文字列入力用のテキスト・フィールドを含むHTMLフォームをロードします。文字列を入力して「POST」ボタンをクリックし、この文字列をPOSTリクエストとして送信します。SimpAppServletは、ユーザーが入力した文字列をJolt for WebLogicクラス・ライブラリで使用可能な形式に変換し、TuxedoのTOUPPERサービスへのリクエストをディスパッチします。このサービスは、文字列を大文字に変換してブラウザに表示します。

サーブレット・サンプル・プログラムsimpappを設定するには、次の手順に従います。

手順1. .準備作業を行う

  1. クライアント・マシンにインストールされているブラウザが以下のいずれかであることを確認します。
    • Netscape Communicator 4.7以上
    • Internet Explorer 5.0以上
  2. クライアント・マシンは、Tuxedo環境への接続に使用するWebLogic Serverにネットワーク接続されている必要があります。
  3. Tuxedoとサンプル・プログラムsimpappを設定して起動します。
  4. サーバー側のsimpappアプリケーションを起動する方法については、Tuxedoのドキュメントを参照してください。TOUPPERサービスが使用可能であることを確認します。
  5. Joltサーバーを設定します。Joltサーバーの構成方法に関する情報については、『Oracle Joltの使用』を参照してください。
    • Joltサーバー・リスナー(JSL)に関連付けられたホスト名とポート番号を書き留めます。
    • Joltリポジトリのバルク・ローダー・ファイルを使用して、Joltリポジトリで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

      hostportは、Joltサーバー・リスナー(JSL)のホスト名とポート番号です。simpapp.repは、Oracle Joltによって提供されるバルク・ローダー・ファイルで、次のいずれかの場所にあります。

      $TUXDIR/samples/jolt/wls/servlet/ (UNIXの場合)

      %TUXDIR%¥samples¥jolt¥wls¥servlet¥ (Windows 2003の場合)

  6. インストール時にCLASSPATHが適切に設定されていることを確認します。WebLogic Serverのクラス・ライブラリには、このサンプル・プログラムを実行するために必要な次の3つの.jarファイルがあります。
    • jolt.jar
    • joltjse.jar
    • joltwls.jar.

手順2. WebLogic Serverを起動する

Windows 2003システムを使用している場合、「スタート」メニューからWebLogic Serverを起動できます。それ以外の場合は、WebLogic Serverのルート・ディレクトリのコマンド行でstartWebLogicスクリプトを使用します。

WebLogic Serverの起動方法の詳細は、『Oracle WebLogic Server管理者ガイド』のWebLogic Serverの起動と停止に関する項を参照してください。

手順3. WebLogic Serverでサーブレットを構成する

Jolt接続プールと、WebLogic Server 6.0以降のスタートアップ・クラスの設定は、管理コンソールで行います。

  1. WebLogicドキュメントのルート・ディレクトリにsimpapp.htmlページをコピーします。
  2. デフォルトでは、WebLogic Serverの\config\mydomain\applications\simpappディレクトリになります。WebLogicに組み込まれたHTTPサーバーは、このディレクトリでHTMLページとその他のMIMEの種類を検索します。

  3. ブラウザに次のアドレスを入力して、WebLogic Serverの管理コンソールを起動します。
  4. http://hostname:listenport#/console

  5. コンソールの左側のフレームで「サービス」フォルダを開き、Joltフォルダをクリックします。右側のフレームに、ドメイン内で定義されたすべてのJolt接続プールを示すJolt「接続プール」表が表示されます。
  6. 「新しいJolt Connection Poolの構成」をクリックします。右側のフレームに、新しい接続プールを設定するためのタブ付きのページが表示されます。
  7. 「一般」タブに次の情報を入力します。
    1. 「名前」、「最小プール・サイズ」、「最大プール・サイズ」、および「タイムアウト」属性フィールドに値を入力します。
    2. 「セキュリティ・コンテキストを有効化」チェックボックスをオンにして、セキュリティ・コンテキストを有効にします。これにより、セキュリティ情報がWebLogic Server環境からTuxedo環境に伝播されます。
    3. 「作成」をクリックすると、「名前」フィールドに入力した名前で接続プールのインスタンスが作成されます。左側のフレームのJoltノードの下に新しいインスタンスが追加されます。
  8. 「アドレス」タブと「ユーザー」タブをクリックして確認し、フィールドの値を変更するか、デフォルト値を使用して、「適用」をクリックします。変更内容が保存されます。
  9. 「ターゲット」タブをクリックして、Jolt接続プールを起動する使用可能なサーバーを選択します。
  10. 左側のフレームで、「デプロイメント」フォルダの下にある「起動と停止」フォルダをクリックします。右側のフレームに「起動と停止」表が表示され、ドメイン内で定義されているすべてのスタートアップ・クラスが示されます。
  11. 「新しいStartup Classの構成」をクリックします。右側のフレームにタブ付きのダイアログ・ボックスが表示されます。次の手順を実行して新しいスタートアップ・クラスを設定します。
    1. 「名前」、「クラス名」、および「引数」属性フィールドに値を入力します。
    2. 障害が発生した場合にWebLogic Serverを起動しないようにするには、「失敗したらサーバーを起動しない」チェックボックスをオンにします。
    3. 「クラス名」に次の名前を入力します。bea.jolt.pool.servlet.weblogic.PoolManagerStartUp
      このスタートアップ・クラスには引数はありません。
    4. 「作成」をクリックすると、「名前」フィールドに入力した名前でスタートアップ・クラスのインスタンスが作成されます。左側のフレームの「起動と停止」フォルダに新しいインスタンスが追加されます。
  12. 次の手順を実行して、simpappサーブレットをWebアプリケーションとして登録します。
    1. コンソールの左側のフレームで「デプロイメント」フォルダを開き、「Webアプリケーション」アイコンをクリックします。
    2. 「新しいWebアプリケーションをインストール」をクリックし、「アプリケーションのアップロードとインストール」ページを表示します。
    3. ステップ1で、simpappサーブレットのインストール先としてデフォルトのディレクトリを使用するか、別のディレクトリを選択します。
    4. ステップ2で、simpappサーブレットへのパスを入力するか、「参照」を使用して選択し、「アップロード」ボタンをクリックします。
    5. simpappサーブレットがWebLogicにWebアプリケーションとして登録され、Deployments¥Web Applicationsフォルダの下にアイコンが表示されます。

手順4. WebLogic Serverを停止して再起動する

Joltセッション・プールを起動するには、WebLogic Serverを停止して再起動する必要があります。WebLogic Serverの再起動方法については、『Oracle WebLogic Server管理者ガイド』のWebLogic Serverの起動と停止に関する項を参照してください。

手順5. サーブレットをコンパイルする

WebLogic Serverを再起動したら、次の手順を実行してSimpAppServletファイルをコンパイルします。

  1. WebLogicドキュメントのルート・ディレクトリ\config\mydomain\applications\simpappに、新しいWEB-INFディレクトリを作成します。
  2. Tuxedoのインストール・ディレクトリ\samples\jolt\wls\servlet\から新しいWEB-INFディレクトリにweb.xmlファイルをコピーします。
  3. 次のコードでSimpAppServlet.javaファイルをコンパイルします。
  4. javac -d %WL.HOME%\config\mydomain\applications\simpapp\WEB-INF\classes SimpAppServlet.java

    これにより、必要なJavaクラスもWEB-INF¥classes ディレクトリにコピーされます。

手順6. simpapp.htmlフォームを表示する

  1. ブラウザを開きます。
  2. simpapp.htmlファイルのURLを入力します。たとえば、デフォルトのURLは次のとおりです。
  3. http://localhost:port/simpapp/simpapp.html

    localhostはWebLogic Serverのホスト名、portはWebLogic Serverがログイン・リクエストをリスニングするポートです。

    図B-1に示すようなページが表示されます。

    図B-1 simpapp.htmlの例


    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セッション・プールの取得方法を示しています。

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

手順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に示すようなページが生成されます。

図B-2 出力ストリームの結果例

出力ストリームの結果例


  先頭に戻る       前  次