
Jakarta Tomcat は、Apache のサブプロジェクトでつくられている Servlet / JSP のリファレンス環境である。
こいつを使って、Servlet / JSP のいろいろを試す。
Tomcat 4とApache の連携は、あちこち探しても日本語資料が微量というか・・・まとまってないですねぃ・・・。
というわけで、解読というか、いろいろ試してApache との連携の解読に成功しました。そしてついにmod_jk2にも対応。バーチャルホストも完全網羅。
Jakarta Tomcat 4.1.27にはXSS(クロスサイトスクリプテング)の脆弱性が報告されています。盗聴の危険性、高?、ウイルス/ワームの危険性なし? Tomcat以外のServletエンジンでも注意しましょう。
このページ以下のもくじ / インストールページ分離に失敗
Tomcat的ディレクトリ構造は[Tomcat]とか[Webアプリケーション]へ移動中。
まぁとりあえず、動作確認もできたところで、設定ファイルいってみよう
conf/server.xml です。(日本語コメント付き
UTF-8)
conf/tomcat-users.xml
| サービス | Port | 初期状態 | 備考 |
|---|---|---|---|
| Server | 8005 | Open | シャットダウン用 |
| WARP | 8008 | Close | mod_webapp用 Tomcat 4のみ |
| AJP13 | 8009 | Open | Coyote mod_jk mod_jk2用 |
| HTTP/1.1 | 8080 | Open | Coyote |
| Proxied HTTP/1.1 | 8082 | Close | |
| 旧HTTP/1.1 Test | 8083 | Close | catalina |
| HTTP/1.0 | 8084 | Close | catalina |
| SSL HTTP/1.1 | 8443 | Close | Coyote |
| パス | ver | 文字コード | 状態 |
| conf/server.xml | 5.0.25 | UTF-8 | |
| conf/server.xml | 4.1.18 | UTF-8 | 半分? |
| webapps/ROOT/index.jsp |
4.1.12 | EUC-JP | 半分? |
| webapps/tomcat-docs/jk2/index.html |
4.1.12 | Shift_JIS | 未完 |
| webapps/tomcat-docs/jk2/jk2/configtc.html |
4.1.12 | Shift_JIS | ちょっと |
文字コードの違いは、いろいろ適当に訳しているからです。
Last update 2002.11.10
ApacheとTomcat をごにょごにょするには、mod_jk というものを使います。この近辺の日本語資料が少ないので悲しいです。
なんか、mod_webapp とか、coyote とか mod_jk2 とかいろいろあるので混乱しがちですが、次のような感じです。
| 名称 | 開発 | Tomcat ver | Protocol | 対応サーバとか |
| mod_jserv | 終了 | 3.x | AJP11,Ajp12 | Apache 1.3.x |
| mod_jk | 終了 | All | AJP12,AJP13 | Apache 1.3.x |
| mod_jk2 | 現 | 3.x 4.x 5.x | AJP12,AJP13 | Apache 1.3/2.0 |
| mod_webapp | 4.x | WARP | Apache 1.3.x ? (Windows非サポート) |
|
| coyote | 現 | 3.3以降 | HTTP/1.1,AJP13,JNI | Tomcat側の新実装 |
| ajp | AJP12,AJP13 | Tomcat側の旧実装? |
Tomcat 4.1.x には最初から coyote が入ってたので、Apache 側の設定をしてみましょう。
手軽に設定するには mod_webappもよかったのですが、Tomcat 5に変えたときに mod_jk2に変えました。
Tomcatは、バーチャルホストができます。しかし、Apacheと連携しようとすると、意外とはまってしまう場合が多いようです。
ホスト名の一致はどこで区別されているかというと、アクセスしたときのURLではありません。URLによって表示されるApacheのServerNameとTomcat側のサーバ名とが比較されます。
Apache の設定 <VirtualHost>のServerName
mod_jk / mod_jk2 / mod_webappの設定
Tomcatの設定 server.xml の<Host>
この3つを同じにします。
ApacheのServerAlias は、mod_xx の設定には影響しません。その名前でアクセスしても、mod_webappではServerNameでアクセスしたことになります。mod_jk2では、ServerNameで指定されたのと同じ[uri:~]に関連づけられたTomcatにつながりますが、Tomcat側ではすべての名前に対応するAliasも必要らしいという感触です。
mod_jk / mod_jk2の場合は server.xml には、Alias指定も必要かもしれません。Aliasが必要なのはTomcat 5だけなのかそうではないのかは不明かもしれません。
わからなければ設定してあげましょうか。
JDBCの接続は、Servletの中に書き込んでしまうとあとから変更することが面倒です。J2EEではJNDIを使ってこれをある程度柔軟に管理できるようにしています。
ここでは、Tomcatに各種JNDIリソースを登録する方法について。
JDBCは、DataSourceというConnectionを作るためのクラスがJDBC2の頃から用意されています。これは、各JDBCドライバで効率よく接続数を管理するためにも重要だったりします。
J2EEでJNDIにJDBCを登録するには、このDataSourceを登録します。Tomcatでは、どんなJDBCドライバでも登録できるようにDataSourceが用意されているので、これを使います。しかし、その反面、JDBCドライバに含まれるDataSourceなどの登録方法は、しっかり解説されていないようです。
参考
参考?