前へ     目次     索引     DocHome     次へ     
iPlanet Application Server 開発者ガイド



第 14 章   iPlanet Application Server の機能の活用


この章では、iPlanet Application Server の機能をアプリケーションに実装する方法について説明します。iPlanet Application Server には、iPlanet Application Server 環境で使う Servlet を強化する多くの追加機能があります。これらの機能は正規の Servlet 仕様書には規定されていませんが、第 13 章「安全なアプリケーションの作成」で説明されている Servlet のセキュリティの枠組みのように、一部の機能は Sun Microsystemsィ の新しい標準をベースにしており、これらの新しい標準に準拠しています。

この章には次の節があります。



Servlet の結果のキャッシュ

iPlanet Application Server には、その後の同じ Servlet への呼び出しをすばやく実行するため、Servlet の結果をキャッシュする機能があります。iPlanet Application Server は一定の期間、リクエストの結果 (たとえば、Servlet の実行) をキャッシュします。この方法では、別のデータ呼び出しを行うと、再びオペレーションを実行する代わりに iPlanet Application Server によってキャッシュされているデータを返すことができます。たとえば、5 分ごとに更新される株式相場を Servlet が返す場合、キャッシュが 300 秒後に期限切れになるように設定します。

結果をキャッシュするかどうか、およびキャッシュする方法は、結果に含まれているデータのタイプによって異なります。たとえば、クイズの投稿の結果は、Servlet への入力が毎回異なるため、キャッシュしても意味がありません。ただし、クイズの結果から収集した人口統計データを示す高度なレポートをキャッシュし、1 時間に 1 回更新することは可能です。

Servlet コンフィグレーションファイル内で特定のフィールドを編集することによって、iPlanet Application Server の Servlet がメモリキャッシュを処理する方法を定義できます。このように、有効な iPlanet Application Server 機能を利用した標準 Servlet をプログラムによって作成できます。

表 14-1は、Servlet コンフィグレーションファイル内のキャッシュ設定を示しています。


表 14-1    Servlet キャッシュ設定

「Name」

「Type」

「Value」

cache-timeout  

整数  

オプション。この Servlet のメモリキャッシュが解放されるまでの経過時間 (単位は秒)  

cache-size  

整数  

オプション。Servlet のメモリキャッシュのサイズ (単位は KB)  

cache-criteria  

文字列  

オプション。カンマで区切られた記述子を持つ基準式の文字列。各記述子はどれかの Servlet 入力パラメータとの一致を定義します。  

cache-option  

文字列  

オプション。TIMEOUT_CREATETIMEOUT_LASTACCESS のどちらかにキャッシュのタイムアウトオプションを設定します。  

これらの設定の詳細については、「Servlet のキャッシュを指定する要素」を参照してください。

cache-criteria フィールドは、Servlet 結果をキャッシュするかどうかを決める基準を設定します。このフィールドは、リクエスト内の 1 つまたは複数のフィールドをテストします。その結果、値や 1 つまたは複数のフィールドの有無に従って条件付きで結果をキャッシュできます。テストに合格すると、Servlet の結果がキャッシュされます。

表 14-2cache-criteria フィールドシンタックスを示します。


表 14-2    CacheCriteria フィールド 

シンタックス

説明

arg  

arg の値が入力パラメータリストにあるかどうかのテスト。たとえば、フィールドが "EmployeeCode" に設定されている場合、リクエストに "EmployeeCode" フィールドが含まれていると、その結果がキャッシュされます。  

arg=v  

argv (文字列または数式) と一致するかどうかのテスト。たとえば、フィールドが "stock=NSCP" に設定されている場合に、リクエストに値 NSCP を持つ stock フィールドが含まれていると、その結果がキャッシュされます。別の値を使って Servlet を実行する場合に新しい結果セットをキャッシュするには、引数にアスタリスク (*) を割り当てます。たとえば、基準が "EmployeeCode=*" に設定されていると、リクエストオブジェクトに "EmployeeCode" と呼ばれるフィールドが含まれており、その値が現在キャッシュされている値とは異なる場合は、結果がキャッシュされます。  

arg=v1|v2  

arg がリストの値 (v1v2 など) と一致するかどうかのテスト。次のようにします。"dept=sales|marketing|support".  

arg=n1-n2  

arg の数値が指定範囲内にあるかどうかのテスト。次のようにします。"salary=40000-60000".  



startup クラス の使用法



startup クラスは、iPlanet Application Server の起動時にメモリに自動的に読み込まれる、ユーザ定義のクラスオブジェクトです。アプリケーションサーバの環境内で初期化タスクを実行します。StartupClass オブジェクトの特性は次のとおりです。

  • そのクラスを実行したサーバが存在するかぎり保持される

  • サーバが終了するときに通知を受ける

  • kjs プロセスの JVM 内で実行するので、各 kjs プロセスには StartupClass オブジェクトのインスタンスが 1 つある

starup クラスは次の必要条件を満たす必要があります。

  • パッケージ com.iplanet.ias.startup 内にあること

  • 名前が StartupClass であること

  • インタフェース com.iplanet.ias.startup.IStartupClass を実装すること



    StartupClass オブジェクトは、アプリケーションサーバのインスタンスに 1 つのみ配置できます。



次の節では、starup クラスの作成および使用法について説明します。


IStartupClass インタフェース

StartupClass クラスは IStartupClass インタフェースを実装する必要があります。IStartupClass インタフェースは 2 つのメソッドを定義しています。

  • public void startUp() throws StartupClassException

    kjs を起動すると (kjs がこのメソッドを呼び出す StartupClass デフォルトコンストラクタを呼び出すと)、このメソッドはアクティビティを実行するために呼び出されます。このメソッドは任意のアクションを実行できます。メソッドは、kjs エンジンがすべての関連コンテキストを設定したあとに呼び出されるので、EJB および JDBC リソースにアクセスできます。

    例外が発生した場合、このメソッドは com.iplanet.ias.startup.StartupClassException をスローします。

  • public void shutDown()

    このメソッドは、開始時に割り当てられたすべてのリソースの割り当てを解除する必要があります。

startUp メソッドが失敗した場合、com.iplanet.ias.startup.StartupClassException をスローします。そのシグネチャは次のとおりです。

public class StartupClassException extends java.lang.Exception

その 1 つのコンストラクタは次のとおりです。

public StartupClassException(java.lang.String msg)


Startup クラス のビルド

クラスのビルドは Ant を介してサポートされます (Ant の使用は必須ではない)。ビルドに必要なファイルは Install_dir/startup ディレクトリにあるので、このディレクトリで StartupClass ファイルおよび独立した Java ファイルをビルドすることをお勧めします。まず、次の操作を実行します。

  • Shell の PATH 環境変数にinstall_dir/bin を入れます。

  • Shell の PATH 環境変数に JDK へのパスを入れます。

  • install_dir/startup ディレクトリで StartupClass ファイルをビルドしない場合は、そのディレクトリからビルドに使うディレクトリに StartupClass.javastartup.properties、および build.xml ファイルをコピーします。

ビルドオプションは次のとおりです。

build compile

install_dir/startup ディレクトリ内のすべての Java ファイルをコンパイルし、classes サブディレクトリ内にクラスファイルを配置します。

build jar

build compile を実行し startup.jar ファイルにクラスファイルを保存し、classes サブディレクトリ内にこのファイルを配置します。

build clean_jar

startup.jar ファイルを削除します。

build clean

classes サブディレクトリとそのサブディレクトリを削除します。

build deploy

install_dir/STARTUPCLASSstartup.jar ファイルを配置します。

build

デフォルトビルド。build cleanbuild compilebuild jar、およびbuild deploy を順番に実行します。



.jar ファイル名は startup.jar である必要があります。




Startup クラスの配置

配置は iasdeploy ツールを介してサポートされます。配置には次の 2 種類があります。

  • ローカル配置

    iasdeploy deploystartup path/startup.jar

    次のようにします。

    iasdeploy deploystartup /iasroot/ias/startup/classes/startup.jar

  • リモート配置

    iasdeploy deploystartup -host server -port port -user userName -password password path/startup.jar

    次のようにします。

    iasdeploy deploystartup -host myserver -port 80 -user jjones -password secret /iasroot/ias/startup/classes/startup.jar

path は次のとおりです。

  • iasdeploy が実行されるディレクトリから startup.jar ファイルへの相関パス

  • install_dir/startup/classesなどの絶対パス

複数マシンへの同時配置は、iasdeploy ツールではサポートされていません。

startup.jar ファイルは install_dir/STARTUPCLASS ディレクトリに配置されます。



install_dir/STARTUPCLASS 以外のディレクトリに starup クラスを配置した場合、アプリケーションサーバが起動すると、メッセージが kjs ログで生成されます。





配置ツールは、startup クラスモジュールのアセンブリをサポートしません。




kjs による StartupClass オブジェクトの処理方法

独自の JVM で実行する各 kjs プロセスには、StartupClass オブジェクトのインスタンスが 1 つあります。

com.kivasoft.engine.Engine.javarun メソッド内では、環境が設定されてからほかのメソッドが実行されるまでの間に、システムクラスローダによって StartupClass オブジェクトが作成されます。StartupClass オブジェクトが作成されると、startUp メソッドが実行されます。

startUp メソッドが正しく実行された場合、kjs はメソッドが正常に終了するまで実行します。iascontrol stop を使った正規の終了では、kjsStartupClass オブジェクトの shutDown メソッドを呼び出します。

startUp メソッドが com.iplanet.ias.StartupClassException をスローした場合は、kjsshutDown メソッドを呼び出し、StartupClass オブジェクトはすぐにガベージを収集します。最後に kjs が終了します。



kjs プロセスには StartupClass オブジェクトの独自のコピーがあるので、注意して startup クラスを設計する必要があります。共有リソースの同期の問題を処理することをお勧めします。




前へ     目次     索引     DocHome     次へ     
Copyright © 2002 Sun Microsystems, Inc. All rights reserved.

最新更新日 2002 年 3 月 6 日