エージェント、サーブレット、CGI プログラムはすべて、Domino Web アプリケーションの機能を拡張できます。エージェントは、フォーム WebQueryOpen および WebQuerySave イベントを介して Web アプリケーションと緊密に統合できます。サーブレットは、session や cookie management のような、サーブレット API クラスを介して使用できる、特別な機能を備えています。Java™ の急激な普及により、今日、新しい開発には CGI プログラムよりもサーブレットを使用することが主流になっています。ただし、すぐに入手できる CGI プログラムも多数提供されているため、これらを流用してもよいでしょう。
独自のアプリケーションを記述していて、サーバー上でいくつかの機能をプログラミングする必要がある場合は、使用するプログラムの種類を選択することになります。プログラムは種類ごとにそれぞれ利点があるため、特定の状況に合わせて選択することをお勧めします。お勧めする使い方をプログラムの種類ごとに示します。
プログラムの種類
|
最適の用途
|
エージェント
|
文書を読んだりポストしたりするときに Domino アクションを実行するプログラムに使用します。
スケジュールに従って実行される必要のあるプログラム、または新しいメールの到着などのデータベースアクションの発生に応じて実行されるプログラムに使用します。
|
サーブレット
|
JDBC のような標準 Java インターフェースを使用するプログラムに使用します。
HTTP セッション管理または Cookies を使用するプログラムに使用します。
複雑な Java プログラム、またはリソース中心の Java プログラムに使用します。
|
CGI プログラム
|
システムへの低レベルアクセス権限を必要とするプログラムに使用します。
非 Java API を介して他のプロダクトへのインターフェースを持つプログラムに使用します。
|
これらのプログラムのプロパティを比較すると、次のようになります。
プログラムを記述できる言語
- エージェント: Java、LotusScript®、Notes。すべてクロスプラットフォーム言語です。
- サーブレット: Java。クロスプラットフォーム言語です。
- CGI プログラム: プラットフォームスクリプト言語、つまり実行可能ファイルにコンパイルできるすべての言語、または Java や Perl のようなクロスプラットフォーム言語で記述できます
プログラムが格納される場所
- エージェント: Domino データベースに格納されます。これは、エージェントがデータベースの複製とサーバーのクラスタリングを活用することを意味します。
- サーブレット: ファイルシステムに格納されます。通常そのディレクトリは domino¥servlet です。
- CGI プログラム: ファイルシステムに格納されます。通常そのディレクトリは domino¥cgi-bin です。
Web ユーザーがプログラムを起動する方法について
- エージェント: WebQueryOpen または WebQuerySave イベントによって自動的に起動されるか、OpenAgent URL によって直接起動されます (例: http://acme.com/sales.nsf/results?OpenAgent)。
エージェントは、新しいメールの到着またはスケジュールなどのサーバーイベントによっても起動することができます。
- サーブレット: URL によって直接起動されます。Domino は 2 種類のサーブレット URL を認識します。一方の URL は、名前でサーブレットを指定します (例: http://acme.com/servlet/SQLDatabaseQuery?month=june)。もう一方の URL は、Domino 管理者によってサーブレットにマッピングされたファイル拡張子を指定します (例: http://acme.com/sqlquery.esp?month=june)。
- CGI プログラム: URL によって直接起動されます (例: http://acme.com/cgi-bin/filesearch?string=widget)。
プログラムがサーバーによってロードまたはアンロードされるとき
- エージェント: 起動時にロードされ、終了時にアンロードされます。
- サーブレット:一度だけロードされます。HTTP サーバータスクがシャットダウンされるか再起動されるまで常駐します。この点では、サーブレットはエージェントや CGI プログラムと比べ、パフォーマンス面で優れています。しかし、これはまた、サーブレットクラスが多くの要求から同時にアクセス可能であることを意味します。したがって、サーブレットコードがスレッド単位の安全性を確保していなければなりません。
- CGI プログラム: 起動時にロードされ、終了時にアンロードされます。
プログラムと Domino の対話方法について
- エージェント: LotusScript と Java エージェントは、Domino のオブジェクトクラスを使用できます。式エージェントは、ほとんどの@関数を使用できます。
- サーブレット: Common Object Request Broker Architecture (CORBA) インターフェースを介して Domino にアクセスできます。
- CGI プログラム: CORBA インターフェース、Domino C または C++ API を介して Domino にアクセスできます。
プログラムで使用可能なセキュリティ
- エージェント: Web ユーザーがエージェントを起動するには、エージェントを含むデータベースへのアクセス権が [投稿者] 以上でなくてはなりません。エージェントは、その作成者またはユーザーの識別情報を使用することで動作できます。Domino 全体のセキュリティ機能は、エージェントが実行する操作に適用されます。
- サーブレット: サーブレットへのアクセス権は、Domino ディレクトリにあるファイル保護文書によって管理できます。
サーブレットが CORBA インターフェースを介して Domino にアクセスする場合、Domino ユーザー名とインターネットパスワードを指定できます。Domino セキュリティは、すべての CORBA オペレーションに適用されます。
- CGI プログラム: プログラムへのアクセス権は、Domino ディレクトリにあるファイル保護文書によって管理できます。
プログラムが、C API を介して Domino にアクセスする場合、サーバー ID を識別情報として取得します。CORBA インターフェースを使用する場合は、ユーザー名とインターネットパスワードが指定されます。どちらの場合も、Domino セキュリティが適用されます。