Apache Software Foundation | Jakarta Project | Apache Tomcat
はじめに

この文書は、DominoをTomcatと協調するように設定する方法を説明します。

WebサーバとTomcatエンジンの間で動作する構成要素(ワーカ)の設定方法を知るために、 ワーカの手引き もあわせて読むことをおすすめします。

最近のバージョンのLotus Domino WebサーバはJava サーブレットを使えるようになりましたが、 執筆時点では、DominoサーブレットコンテナはJDK 1.2.2を使用しており、これをJDK1.3に置き換えることは(明らかに)できません。

つまり、サーブレットでJDK1.3でしか使えないJAASなどのAPIを使おうとすると、ハマってしまうということです。

文書規約と仮定

${tomcat_home}はTomcatのルートディレクトリです。 Tomcatのインストール時には以下のサブディレクトリがなければいけません。

  • ${tomcat_home}\conf - さまざまな設定ファイルを置きます。
  • ${tomcat_home}\webapps - サンプルアプリケーションがあります。
  • ${tomcat_home}\bin - Webサーバプラグインを置きます。

この文書の全てのサンプルでは、${tomcat_home}は c:\jakarta-tomcat になっています。 ワーカ(worker)は、Dominoサーバからの作業を受け取るTomcatプロセスと定義します。


サポートする構成

Domino-Tomcatリダイレクタは以下の環境で開発・テストされました。

  • WindowsNT 4.0-i386 SP6a (NTサービスパックの他のバージョンでも動くはずです)、およびWindows 2000 Professional
  • RedHat Linux 7
  • Lotus Domino 5.0.6a
  • Tomcat 3.2.x、Tomcat 3.3.x、Tomcat 4.0.x、Tomcat 4.1.x、および Tomcat 5

リダイレクタは、要求をTomcatコンテナに送るのに ajp12 および ajp13 を使用します。 おそらくTomcatとともに内部プロセスとしても動作するでしょうが、テストされていません。


ajpプロトコルをサポートするソフトウェアは?

ajp12プロトコルはTomcat 3.2.xと3.3.xでのみ使用可能です。

ajp12 は Tomcat 3.3.xでは 推奨されません 。代わりに ajp13 を使うべきです。 ajp13 はTomcat 4.0.x, 4.1.x と 5 で扱える唯一のajpプロトコルです。

もちろんTomcat 3.2.xと 3.3.xもajp13プロトコルをサポートしています。

jetty のような他のサーブレットエンジンもajp13プロトコルをサポートしています。



Windowsでのインストール

Tomcatリダイレクタには以下の3つが必要です。

  • tomcat_redirect.dll - Dominoプラグインです。ビルド済のDLLを入手するか、自分でビルドして下さい (「Windows向けのビルド」を参照)。
  • workers.properties - ワーカ(Tomcatプロセス)で使用するホストとポート(いずれも複数指定可)を記述するファイルです。 サンプルのworkers.propertiesはconfディレクトリにあります。
  • tomcat_redirector.reg - レジストリ エントリです。

本項ではTomcatリダイレクタが c:\jk\lib\tomcat_redirector.dll に、 プロパティファイルが c:\jk\conf に置かれ、 ログディレクトリとして c:\jk\logs を作成していると仮定して話をすすめます。

tomcat_redirector.dll ファイルをDominoのプログラムディレクトリにコピーします (これは nlnotes.exe というファイルが入っているディレクトリで、 c:\Lotus\Domino というような名前になっているはずです)。

リダイレクタDLLをDominoのプログラムディレクトリにコピーします。
c:\> copy c:\jk\lib\tomcat_redirector.dll c:\Lotus\Domino

要するに、このファイルがどこにあるかをDominoに伝えるわけですが、その前にいくつかのレジストリ エントリを作成する必要があります。 一番簡単なのは、インストール時に作成される tomcat_redirector.reg ファイルを編集するという方法です。このファイルは初期状態としては以下のようになっています。

REGEDIT4

[HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Jakarta Dsapi Redirector\1.0]
"log_file"="c:\\jk\\logs\\domino.log"
"log_level"="debug"
"worker_file"="c:\\jk\\conf\\workers.properties"
"worker_mount_file"="c:\\jk\\conf\\uriworkermap.properties"
"tomcat_start"="c:\\jakarta-tomcat\\bin\\tomcat.bat start"
"tomcat_stop"="c:\\jakarta-tomcat\\bin\\tomcat.bat stop"

Tomcatがインストールされている場所にあわせて、このファイルを編集します。つまり、 c:\\jakarta-tomcat c:\\jk を適切なパスに置き換えます。 円マークまたはバックスラッシュ("\")は2個ずつのままにしておく ことをお忘れなく。

必要な変更を加えたら、このファイルを保存し、ダブルクリックしてレジストリに追加します。

worker_fileキーとworker_mount_fileキーが参照しているファイルについては、実際に存在し、正しいデータが入っている必要があることに注意して下さい。 Tomcatをデフォルトでインストールした場合には、これらのファイルも作成されています。Tomcatの最近のバージョンでは、スタートアップ時にuriworkermap.properties-autoというファイルを作成し、デフォルトの動作をさせるためにこのファイル名をuriworkermap.propertiesに変えることも可能であることにも注意して下さい。

Windows 2000ユーザーへの注意

デフォルトのworkers.propertiesを使う場合、何らかの理由で、Windows 2000ではlocalhostへの参照解決で問題が起こるようです。

一番簡単な解決策は'localhost'を全て'127.0.0.1'に置換することです。


Tomcatの自動起動

先にあげたレジストリ エントリの最後の2つ(tomcat_startとtomcat_stop)にはコマンドが書いてあります。これは、DominoのHTTPサーバが起動・停止する時に、 リダイレクタDLLがTomcatを起動・停止させるのに使用するコマンドです。

もしこのような動作が不要なら、これらの2行を省くこともできます (もしすでにレジストリに設定しているのであれば削除することもできます)。


Dominoの設定

最後に、DSAPI拡張DLLを使えるようにDominoの設定を行う必要があります。 Dominoサーバ設定について詳しくない人のために説明しておくと、サーバで設定可能な動作のほとんどは、 「公開アドレス帳(Public Name and Address Book)」 、または略して 「NAB」 と呼ばれるデータベースの「サーバ文書」という文書でコントロールできます

(注意:LotusはDomino 5以降、NABを「ドミノディレクトリ」に名称変更しています)。 それぞれのDominoサーバにはNAB(ファイル名はnames.nsf)があり、それぞれのNABには、現在のサーバに関する文書を含む、たくさんのサーバ文書があります。

もし今までにDominoサーバの設定をしたことがないのであれば、マニュアルを見る必要があるかもしれません。あるいはこの文書を仲良しのDomino管理者に見せる必要があるかもしれません。

Dominoサーバー文書の使い方を心得ているのなら、これからすることは実はとても簡単です。 設定しようとしているサーバに関するサーバ文書を開き、編集モードにして、「インターネット」タブの「HTTP」サブタブにある「DSAPI」セクションの「DSAPIフィルタファイル名」フィールドを探します。このDSAPIのフィールドに"tomcat_redirector.dll"を追加し、文書を保存して閉じます。


Dominoの再起動

これらの設定変更を反映し、他の箇所がおかしくなっていないことを確認するために、 Dominoサーバを再起動しなければなりません。

もしサーバがサービスとして実行されていて、直前のコンピュータの再起動以降に関連するシステム変数 (JAVA_HOME, TOMCAT_HOME, CLASSPATH)を変えたのなら、今すぐコンピュータを再起動しなければなりません。 なぜなら、更新されたシステム変数はリブートした後でないとサービスが参照しないからです。

もし全てうまくいけば、Webサーバが起動したときに、サーバコンソールに以下のような感じで表示されるはずです。

29/05/2001 18:54:13 JVM: Java Virtual Machine initialized.
29/05/2001 18:54:14 Attempting to start Tomcat: c:\jakarta-tomcat\bin\tomcat.bat start
Including all jars in c:\jakarta-tomcat\lib in your CLASSPATH.

Using CLASSPATH: c:\jakarta-tomcat\classes;c:\jakarta-tomcat\lib\ant.jar;c:\jakarta-tomcat\lib\servlet.jar

Starting Tomcat in new window
29/05/2001 18:54:15 Apache Tomcat Interceptor (Jakarta/DSAPI/1.0) loaded
29/05/2001 18:54:16 HTTP Web Server started

同時にTomcatが新しいウィンドウで開いているはずです(レジストリ設定で自動起動オプションをオンにしていることを想定しています)。

これでTomcatが管理しているURLを見ることができるはずです。 Tomcatの設定にもよりますが、以下のようなURLが使えるでしょう。

全ての作業が完了していればの話ですが ;-)



Linuxでのインストール

Tomcatリダイレクタには以下の3つが必要です。

  • libtomcat.so - Dominoプラグインです。ビルド済のシェアードライブラリを入手するか、自分でビルドして下さい (「Linux向けのビルド」を参照)。
  • workers.properties - ワーカ(Tomcatプロセス)で使用されるホストとポート(いずれも複数指定可)を記述するファイルです。 サンプルのworkers.propertiesはconfディレクトリにあります。
  • libtomcat.ini - 設定エントリです。

libtomcat.so ファイルをDominoのプログラムディレクトリにコピーします (このディレクトリは /opt/lotus/notes/5601/linux というような名前になっており、 libnotes.so というファイルが入っているはずです)。 そして、 libtomcat.ini をDominoのデータディレクトリにコピーします。

リダイレクタのシェアードライブラリをDominoのプログラムディレクトリにコピーします。
[user@host] ~ $ cp c:\jk\lib\libtomcat.so /opt/lotus/notes/5601/linux
設定ファイルをDominoのデータディレクトリにコピーします。
[user@host] ~ $ cp c:\jk\conf\libtomcat.ini /opt/datalotus

もしリダイレクタをソースコードからビルドしているのであれば、 これらのファイルはすでに適切な場所にコピーされているはずであることに注意して下さい。

リダイレクタを使う前に、 libtomcat.ini の設定を見たいかもしれません。 デフォルトでは以下のような感じになっています。

log_file=/var/log/domino.log
log_level=debug
worker_file=/var/tomcat3/conf/workers.properties
worker_mount_file=/var/tomcat3/conf/uriworkermap.properties
tomcat_start=/var/tomcat3/bin/tomcat.sh start
tomcat_stop=/var/tomcat3/bin/tomcat.sh stop

もしリダイレクタをソースコードからビルドしている場合は、何も変更する必要はないでしょう。 そうでなければ、Tomcatがインストールされている場所を反映するためにこのファイルを編集しなければならないでしょう。 つまり、/usr/local/apache/tomcatとなっているのを適切なパスに置換するということです。

worker_file キーと worker_mount_file キーが参照しているファイルについては、 実際に存在し、そこに正しいデータが入っている必要があることに注意して下さい。

Tomcatをデフォルトでインストールした場合は、これらのファイルも作成されています。Tomcatの最近のバージョンでは、スタートアップ時にuriworkermap.properties-autoというファイルを作成し、デフォルトの動作ができるようにこのファイル名をuriworkermap.propertiesに変えることも可能であることにも注意して下さい。

Tomcatの自動起動

先にあげたレジストリエントリの最後の2つ(tomcat_startとtomcat_stop)にはコマンドが書いてあります。これは、DominoのHTTPサーバが起動・停止する時に、 リダイレクタがTomcatを起動・停止させるのに使用するコマンドです。

もしこの動作が不要ならば、この2行を削除することも可能です。


Dominoの設定

最後に、DSAPI拡張DLLを使って、Dominoの設定を行う必要があります。

Dominoサーバ設定について詳しくない人のために説明しておくと、サーバで設定可能な動作のほとんどは、 「公開アドレス帳(Public Name and Address Book)」 、 または略して 「NAB」 と呼ばれるデータベースの「サーバ文書」という文書でコントロールできます

(注意:LotusはDomino 5以降、NABを「ドミノディレクトリ」に名称変更しています)。

それぞれのDominoサーバにはNAB(ファイル名はnames.nsf)があり、それぞれのNABには、現在のサーバに関する文書を含む、たくさんのサーバ文書があります。 もし今までにDominoサーバの設定をしたことがないのであれば、マニュアルを見る必要があるかもしれません。あるいはこの文書を仲良しのDomino管理者に見せる必要があるかもしれません。

Dominoサーバー文書の使い方を心得ているのなら、これからやることは、実はとても簡単です。

設定しようとしているサーバに関するサーバ文書を開き、編集モードにして、「インターネット」タブの「HTTP」サブタブにある「DSAPI」セクションの「DSAPIフィルタファイル名」フィールドを探します。

このDSAPIのフィールドに"libtomcat.so"を追加し、文書を保存して閉じます。


Dominoの再起動

これらの設定変更を反映し、他の箇所がおかしくなっていないことを確認するために、 Dominoサーバを再起動しなければなりません。

Dominoコンソールで以下のようにタイプします。

[user@host] ~ $ tell http quit
[user@host] ~ $ load http

リダイレクタがロードされ、(Tomcat自動起動を使用している場合は)Tomcat が起動したことを確認するメッセージとともに、 HTTPサーバがリロードされるのを見られるはずです。

これでTomcatが管理しているURLを見ることができるはずです。 Tomcatの設定によりますが、以下のようなURLが使えるでしょう。



Windows向けのビルド

(Windows向けに)コンパイルするためにはJK DominoのソースとMicrosoft Visual C++ 6.0が必要です。

それに、おそらくはLotus Notes C API version 5.0.7またはそれ以降のバージョンが欲しいと思うでしょう。 C APIがなくてもDLLをビルドすることはできますが、その場合にはconfig.hにNO_CAPIマクロを定義する必要があります。 ただし、その場合はDLLからのDominoのログ出力ができなくなります。

  • ディレクトリをDominoプラグインのソースディレクトリに変更します。
  • dsapi.dsp を編集し、連携するDominoサーバのインストール先の情報をインクルードとライブラリパスに反映して更新します ( /I compiler オプションと /libpath リンカーオプションを検索します)。
  • ソースをMSDEVでMakeします。

ディレクトリをDSAPIプラグインのソースディレクトリに変更します。
c:\> cd c:\home\apache\jk\domino
MSDEVを使ってソースをビルドします。
c:\> MSDEV dsapi.dsp /MAKE ALL


Linux向けのビルド

おそらく、Lotus Notes C API version 5.0.3 for Unixまたはそれ以降のバージョンが欲しいと思うでしょう。

C APIがなくてもリダイレクタをビルドすることはできますが、その場合にはconfig.hにNO_CAPIマクロを定義する必要があります。 ただし、その場合は、リダイレクタからのDominoのログ出力ができなくなります。

  • ディレクトリをDominoプラグインのソースディレクトリに変更します。
  • Makefile を編集し、連携するDominoサーバのインストール先の情報をインクルードとライブラリパスに反映して更新します。

以下の変数に適切な値を設定するようにMakefileを編集します。
# Dominoのインストール先のルート。/usr/local/lotusになっていますが、
# 場合によっては/opt/lotusに変える必要があるかもしれません。
NOTESROOT=/usr/local/lotus

# Notes APIがインストールされている場所。
NOTESAPI=$(NOTESROOT)/notesapi

# Dominoのプログラムディレクトリ。
NOTESHOME=$(NOTESROOT)/notes/5061/linux

# Dominoのデータディレクトリ(names.nsfのあるディレクトリ)。
NOTESDATA=$(NOTESROOT)/notes/data

# Notes C APIヘッダ用のインクルードパス。
NOTESINC=$(NOTESAPI)/include

# Tomcatがインストールされている場所。通常はconf、lib、webappsなどもここにあります。
TOMCATHOME=/var/tomcat3

# JDKのインクルードディレクトリ。
JAVAINC=$(JAVA_HOME)/include

  • これでmakeを使ってビルドできるはずです。

makeを使ってビルドします。
[user@host] ~ $ make
リダイレクタ(libtomcat.so)と設定ファイル(libtomcat.ini)を適切な場所に置きます
[user@host] ~ $ make install


[訳注: これは高橋達男が翻訳しました。日本語訳に対するコメントがあれば、こちらに送って下さい。]