server.xmlを書いてTomcatを設定してみよう
それでは、実際に紹介したタグを設定してserver.xmlを書いていきましょう。
コンテキスト全体に関する属性を設定する<Server>タグ
server.xmlを書いていくに当たり、まずはこれらの中でトップレベルに来る要素の<Server>を書く必要があります。<Serverタグ>では、このコンテキスト全体に関する属性を設定できます。
要素 | 内容 |
---|---|
className | 実装するJavaのクラス名。org.apache.catalina.Serverインターフェイスの実装が必要。指定しなければ、標準実装が設定される |
port | shutdownコマンドを待ち受けるポート番号 |
shutdown | shutdownコマンドを実行する文字列。TCP/IP経由でshutdownポートからこの文字列を受け取ると、Tomcatは停止 |
さて、それではTomcatが8005番ポートで「SHUTDOWN」という文字列を受け取るとシャットダウンするように設定します。これらの属性を持ったServerタグは以下のような記述になります。
<Server port="8005" shutdown="SHUTDOWN" > </Server>
これで、このTomcatは8005番ポートでシャットダウンコマンドを受け付けるようになります。
Severに必ず1つ以上設定する<Service>タグ
次に、<Server>タグの中で必ず1つは設定しないといけない<Service>タグを設定します。<Service>タグでは、以下のような属性の設定を行えます。
要素 | 内容 |
---|---|
className | 実装するJavaのクラス名。org.apache.catalina.Serviceインターフェイスの実装が必要。指定しなければ、標準実装が設定される |
name | このサービスの名前を設定。ログなどの表示に利用される。<Serve>rごとに<Service>の名前は一意でなければいけない |
先ほどの<Server>タグに追加して「Catalina」という名前のサービス(Service)グループを設定してみましょう。
<Server port="8005" shutdown="SHUTDOWN" > <Service name="Catalina" > </Service> </Server>
これで、このサーバの中に「Catalina」というサービスグループができました。それでは、サービスを詳しく設定していきましょう。
リクエスト処理を行うための<Connector>タグ
まずは、リクエスト処理を行うための<Connector>タグを定義します。 <Connector>タグでよく利用する属性を見ていきましょう。
要素 | 内容 | デフォルト値 |
---|---|---|
protocol | 流れてくるトラフィックを処理するプロトコルを設定。初期設定はHTTP/1.1コネクタが設定される <br>・org.apache.coyote.http11.Http11Protocol<br>- HTTP/1.1コネクタ <br>・org.apache.coyote.http11.Http11NioProtocol <br>- 非ブロックJavaコネクタ <br>・org.apache.coyote.http11.Http11AprProtocol <br>- APR(Apache Portable Runtime)コネクタ | なし |
port | コネクションを待ち受けるTCPのポート番号を設定。ほかのアプリケーションで利用しているポート番号は利用できない | なし |
≪connectionTimeout | コネクションを受け付けてからコネクタが待ち受ける時間を設定。単位はミリ秒 | 6000 |
redirectionPort | SSLでの通信が接続されたときに転送されるポートを設定 | なし |
maxThreads | このコネクタで処理できるリクエスト処理スレッドの最大数を設定 | 40 |
secure | リクエストがSSL通信かどうかをチェック | false |
scheme | リクエストが指定したスキーマで送られてくるかを確認 | http |
sslProtocol | 利用するSSLプロトコルを設定 | TLS |
SSLEnabled | このコネクタでSSLのトラフィックが利用できるよう設定 | false |
それでは、HTTP/1.1コネクタを用いて8080番ポートで待ち受けるHTTP専用コネクタ(Connector)を設定してみましょう。SSL専用のリダイレクトポートは8443にし、タイムアウトの時間は100秒にします。
<Server port="8005" shutdown="SHUTDOWN" > <Service name="Catalina" > <Connector port="8080" protocol="org.apache.coyote.http11.Http11Protocol" connectionTimeout="10000" redirectPort="8443" scheme="http" secure="false" />
これで、このサービスは8080番ポートで待ち受けるコネクタを持ちました。
コネクタを動かす<Engine>タグ
コネクタが用意できたので、このコネクタを動かすTomcatのエンジン(Engine)を設定します。Engineタグを追加していきます。<Engine>タグでは、次のような属性を設定できます。
要素 | 内容 |
---|---|
backgroundProcessorDelay | backgroundProcessメソッド呼び出しの遅延時間を設定。デフォルトでは、10秒が設定されている |
className | 実装するJavaのクラス名。org.apache.catalina.Engineインターフェイスの実装が必要。指定しなければ、標準実装としてorg.apache.catalina.core.StandardEngineが設定される |
defaultHost | デフォルトのhost名を設定 |
jvmRoute | ロード・バランシング時に利用する識別子を設定 |
name | このエンジンの名前を設定。ログやメッセージで表示される。この名前は、ほかの<Service>を含め一意である必要がある |
Tomcatのエンジンを設定してみましょう。エンジンのデフォルトのホスト名は「localhost」として、エンジンの名前は「Catalina」を設定します。
<Server port="8005" shutdown="SHUTDOWN" > <Service name="catalina" > <Connector port="8080" protocol="org.apache.coyote.http11.Http11Protocol" connectionTimeout="10000" redirectPort="8443" scheme="http" secure="false" /> <Engine name="Catalina" defaultHost="localhost" /> </Service> </Server>
これでTomcatエンジンの設定ができました。
Tomcatに設定する仮想ホスト<Host>タグ
最後に、最低限の設定としてこのTomcatエンジンに仮想ホスト(Host)を登録してみましょう。仮想ホストを登録する<Host>タグでは、以下のような属性を設定できます。
要素 | 内容 | デフォルト値 |
---|---|---|
appBase | 仮想ホストのベースディレクトリを指定。$CATALINA_BASEからの相対パスか絶対パスで指定 | なし |
autoDeploy | Webアプリケーションの自動デプロイを行うかどうかを設定 | true |
backgroundProcessorDelay | backgroundProcessメソッド呼び出しの遅延時間を設定。<Engine>の設定を引き継ぐ | −1秒 |
className | 実装するJavaのクラス名。org.apache.catalina.Hostインターフェイスの実装が必要 | org.apache.<br>catalina.core.<br>StandardHost |
deployOnStartup | Tomcat起動時にappBase以下に配置されているWebアプリケーションを自動的にデプロイするかどうかを設定 | true |
≪name | 仮想ホストの名前を設定。<Host>を設定する場合、最低でも1つは<Engine>で指定したdefaultHostと同じ名前でなければいけない | なし |
deployXML | Webアプリケーションに組み込まれたcontext.xmlのパースを行うかどうかを設定 | true |
errorReportValveClass | このホストで行うエラー報告ValveのJavaクラス名を設定。Tomcatが生成するエラー・ページをカスタマイズできる。org.apache.catalina.Valveインターフェイスの実装が必要 | org.apache.<br>catalina.valves.<br>ErrorReportValve |
unpackWARs | AR形式のappBaseに置かれたWebアプリケーションを展開するかどうかを設定 | なし |
workDir | Contextが用意するスクラッチディレクトリへのパス名を設定 | $CATALINCA_HOME /work直下の適切なディレクトリ |
それでは、この情報で仮想ホストに設定を追加していきましょう。名前は「localhost」でアプリケーションは「webapps」に設定します。WARファイルは自動的に展開するようにしたいと思います。
<Server port="8005" shutdown="SHUTDOWN" > <Service name="catalina" > <Connector port="8080" protocol="org.apache.coyote.http11.Http11Protocol" connectionTimeout="10000" redirectPort="8443" scheme="http" secure="false" /> <Engine name="Catalina" defaultHost="localhost" /> <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" /> </Engine> </Service> </Server>
これでHostの設定まで終わりました。この状態でTomatは簡単なWebアプリケーションも動作できるような状態になりました。
JNDI(Java Naming and Directory Interface)リソースを使う場合や複数の仮想ホストを運用するような場合は、もっと詳細に設定する必要がありますので、Tomcatの公式リファレンスページや、Tomcatのパッケージに同梱されているドキュメントファイル$CATALINA_HOME/webapps/docs/以下のファイルを参考に設定しましょう。
次ページでは、Tomcat 6から新しくできるようになった設定について解説します。
Copyright © ITmedia, Inc. All Rights Reserved.