servlet環境構築に関するメモ
Linux(RedHat7.3環境)(Apache)の場合
バイナリパッケージのインストール
WindowsからLinuxに移行した際にWindows版と同じバージョンの4.0.4を使用していたが、
4.1系列が安定版に移行してきたので4.1.19を選択。
公式サイトからRedHat7.x用のバイナリをダウンロードしてインストール。
Apacheとの連携
Windows版での経験から、mod_jk2を選択。
mod_jk2のコンパイル
ソースは4.1.19のtomcat-connectorのソースに含まれている。
通常通り./configure;makeでコンパイル完了。
Tomcatのhttpサーバ機能停止
JK2ではサーバ機能を停止しても問題なく動作できるので、server.xmlを編集してTomcatのhttpサーバ機能を停止。
データベースの利用に関してのメモ
JDBCドライバのコンパイル
Postgres7.2.1のソースを展開し、configure --with-java、makeを実行したが、どうやってもコンパイルできない。
http://jdbc.postgresql.org/によると、2002.8.14現在Postgres7.2.1がJ2SDK1.4.0ではコンパイルできない
とのことなので同サイトで提供されてるバイナリpgjdbc2.jarをダウンロードしてTomcatのservlet.jarのある場所に置く。
JDBCドライバの利用
javacコンパイラにpgjdbc2.jarを認識させるためCLASSPATHに追加。
日本語の問題
(1) ソースファイルをEUC_JPで作成。
(2) ソース中でservletの応答書式をEUC_JPとする。
response.setContentType("text/html; charset=EUC_JP");
(3) コンパイル時に日本語エンコードを支持するため、javac -encoding EUC_JPとする。
運用に際してのメモ
サーバーアプリのパスを追加する方法
jk2を使用する場合、server.xmlにContextを追加
<Context path="/java/ex"
docBase="/xxx/yyy/java/ex"
debug="0"
reloadable="true">
</Context>
あるいは$CATALINA_HOME/の下に上記の内容でtest.xmlを作成する。
workers2.propertiesにurlを登録
[uri:/java/ex/*]
info=Map the test webapp
サーブレットを追加する場所
追加したContextパスの下のWEB-INF\classes配下がサーブレットの置き場所になる。
サブディレクトリ配下にする場合は、サブディレクトリにおいたソースの先頭にpackage XXX; (XXXがディレクトリ名)を記述する。
さらにサブディレクトリを使用する場合はpackage XXX.YYY;となる。
呼び出しは http://www.server.host/context-path/servlet/XXX.YYY.ClassName と記述する。
4.0.6以降では、WEB-INFの下にweb.xmlが必要になっている。
追加したサーブレットが起動出来るようにweb.xmlを作成、編集する。
サーブレットのコンパイル
基本的なことだが、サーブレットのコンパイルにはサーブレット用のクラスライブラリが必要となる。
少なくとも、CLASSPATHにTomcat配下のcommon/lib/servlet.jarを追加する必要がある。
運用中のトラブル事例
2003.2.5
症状
4.0.4から4.1.19にアップグレードしたところサーブレットが動作しなくなった。
原因
4.0.6以降、サーブレットディレクトリ内にweb.xmlが必要になったため。
*/