- 1.1. サーブレットの特徴
- 1.2. 簡単なサーブレットクラス
- 1.3. サーブレットの設定
- 1.4. コンテナの設定
1.4. コンテナの設定
最後にコンテナの設定を行います。これによって、コンテナにWebアプリケーションの存在を知らせます。Tomcat4の設定ファイルはインストールディレクトリの「conf/server.xml」にあります。これはおおよそ以下のような形式になっています。
<Server port="8005" shutdown="SHUTDOWN" debug="0"> <Service name="Tomcat-Standalone"> <Connector className="org.apache.coyote.tomcat4.CoyoteConnector" port="8080" minProcessors="5" maxProcessors="75" enableLookups="true" redirectPort="8443" acceptCount="10" debug="0" connectionTimeout="20000" useURIValidationHack="false"/> <Engine name="Standalone" defaultHost="localhost" debug="0"> <Logger className="org.apache.catalina.logger.FileLogger" prefix="catalina_log." suffix=".txt" timestamp="true"/> <Realm className="org.apache.catalina.realm.MemoryRealm" /> <Host name="localhost" debug="0" appBase="webapps" unpackWARs="true"> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="common" /> <Logger className="org.apache.catalina.logger.FileLogger" directory="logs" prefix="localhost_log." suffix=".txt" timestamp="true" /> <Context path="/sample" docBase="/home/tomcat/sample" reloadable="true"> </Context> </Host> </Engine> </Service> ... </Server>
ここでまず重要なものは3行目の<Connector>タグです。<Connector>タグで「protocolHandlerClassName」属性が無いものはHTTPプロトコルを取り扱うもので、Tomcat4を単独で動作させる(WWWサーバーとしても動作させる)場合に使用されるものです。この例では「port="8080"」とあるので、8080番ポートで接続を受け付けることになります。以下はその際のURLです。
http://{ServerName}:8080/
次に注目するのは12行目の<Host>タグです。「name」属性が「localhost」となっているものに注目してください。「appBase」ディレクトリはWWWアプリケーションを置くディレクトリを指定しています。サンプルの場合、Tomcatの「webapps」ディレクトリにアプリケーションを置く(リンクでも構わない)と、自動的にアプリケーションを認識させることができます。例えば「webapps」というディレクトリに「SampleApp」というディレクトリを作成し、それ以下にアプリケーションを置くと、
http://{ServerName}:8080/SampleApp/
というURLがWebアプリケーションに割り当てられます。しかし通常はアプリケーション毎に細かい指定を行いたいので、20行目にある<Context>タグを使用します。
<Context>タグの「path」属性は、WebアプリケーションのルートURLを明示的に指定します。サンプルの場合は以下のURLが、WebアプリケーションのルートURLになります。
http://{ServerName}:8080/sample/
「docBase」属性はWebアプリケーションがあるディレクトリを示します。相対パスで記述すると、<Host>タグのappBase属性で指定されたディレクトリからの相対パスとなります。絶対パスで記述することも可能です。サンプルの場合は、「/home/tomcat/sample」にWebアプリケーションがあることを示しています。「reloadable」属性はサーブレットのクラスファイルが更新されたときに、自動的にサーバーにリロードさせるかどうか指定します。開発中は「true」にしておくのが適当です。
以上でサーブレットに関する設定は完了です。サーバーの設定ファイルを編集した場合は、サーバーを再起動させる必要があります。これまでの設定が正しく行われていると、
http://{ServerName}:8080/sample/hi
というURLで作成したサーブレットを実行させることができます。サーブレットを実行させるURLをまとめると、以下のようになります。「Webアプリケーションのルートパス」はコンテナの設定で行います。「<servlet-mapping>で指定したURL」はweb.xmlで設定を行います。
http://{ServletName}:8080/{Webアプリケーションのルートパス}/{<servlet-mapping>で指定したURL}
(実習課題3)
実習課題1・2で作成したサーブレットを実行できる状態にしなさい。