Apache Tomcat

Apache TomcatはJava ServletJSPを実行するためのサーブレットコンテナで、Apacheソフトウェア財団が開発しているオープンソースソフトウェアである。Webサーバとしても使用できる。

Tomcatのインストール

WindowsにTomcatをインストールするには、次の手順で行う。

  1. Apache TomcatのWebサイトから「32-bit/64-bit Windows Service Installer」をダウンロードする。
  2. ダウンロードしたファイルをダブルクリックして起動する。
  3. 「Configuration」ダイアログで必要な情報を入力する。
  4. Webブラウザでhttp://localhost:8080/を開いてTomcatの画面が表示されればインストール完了。

Tomcatの環境変数

環境変数 説明 必須
CATALINA_BASE Webアプリケーションや設定ファイルを配置したパス いいえ
CATALINA_HOME Tomcatをインストールしたパス いいえ
JAVA_HOME JDKをインストールしたパス はい

Tomcatの起動

UnixでTomcatを起動するには、次の手順で行う。

  1. startup.shを実行する。
    $ /usr/local/tomcat/bin/startup.sh

WindowsのGUIでTomcatを起動するには、次の手順で行う。

  1. [スタート]メニューから[プログラム] - [すべてのプログラム] - [Apache Tomcat 8.0] - [Configure Tomcat]を選択する。
  2. [General] を選択する。
  3. [Start] ボタンをクリックする。

WindowsのCUI(コマンドプロンプトなど)でTomcatを起動するには、次の手順で行う。

  1. binフォルダにあるstartup.batを実行する。
    C:\pleiades\tomcat\8\bin> starup.bat
  2. 「Windowsセキュリティの重要な警告」が表示された場合、アクセスを許可する。(管理者権限が必要)

Tomcatの停止

UnixでTomcatを停止するには、次の手順で行う。

  1. shutdown.shを実行する。
    $ /usr/local/tomcat/bin/shutdown.sh

WindowsのGUIでTomcatを停止するには、次の手順で行う。

  1. [スタート]メニューから[プログラム] - [すべてのプログラム] - [Apache Tomcat 8.0] - [Configure Tomcat]を選択する。
  2. [General] を選択する。
  3. [Stop] ボタンをクリックする。

WindowsのCUI(コマンドプロンプトなど)でTomcatを停止するには、次の手順で行う。

  1. binフォルダにあるshutdown.batを実行する。
    C:\pleiades\tomcat\8\bin> shutdown.bat

ドキュメントルートにWebコンテンツを配置する

webapps/ROOT下にWebコンテンツを配置する。

Tomcatのログ

ログファイルは$CATALINA_BASE/log/catalina.outに作成される。

Tomcatの設定ファイル

Tomcatの設定は次に示すファイルで行う。

Tomcatの設定ファイル
設定ファイル 説明
context.xml コンテキストの設定
server.xml Tomcat全般の設定
tomcat-users.xml ユーザとロールの設定
web.xml URLとサーブレットのマッピングを行う配備記述子

context.xml

context.xmlとは、Tomcatで管理するコンテキスト(ひとまとまりのアプリケーション群)を設定するファイルである。コンテキストにはアプリケーション群の動作に必要なJSPServletHTML、画像、JAR、web.xmlなどが含まれる。

データソースの設定

context.xmlでデータソースを設定する例を示す。

<Resource name="jdbc/foo_datasource"
  auth="Container"
  type="javax.sql.DataSource"
  driverClassName="oracle.jdbc.OracleDriver"
  url="jdbc.oracle:thin:@dbsrvr1:1521:db1"
  username="scott"
  password="tiger"
  maxActive="20"
  maxIdle="10"
  maxWait="-1" />
maxActive
最大接続数
maxIdle
最低接続維持数
maxWait
タイムアウト時間

server.xml

server.xmlはTomcatの動作を定義する設定ファイルである。server.xmlは$CATALINA_HOMEディレクトリに配置する。

TomcatへのWebアプリケーションの登録

WebアプリケーションをTomcatへ登録するには、Tomcatのフォルダ\conf\server.xml ファイルにコンテキストタグを追加します。

<Host>
  <Context path="/myapps" docBase="myapps" debug="0" reloadable="true">
  </Context>
</Host>

Tomcatのフォルダ\webapps の下にWebアプリケーションを配置した場合、Tomcatの起動時に自動的に認識するため、上記タグの追加は必要ありません。

server.xmlにコンテキストタグを追加したら、Tomcatを再起動します。

tomcat-users.xml

confディレクトリにあるtomcat-users.xmlファイルは、ユーザやロールに関する設定が格納されている。

管理者アカウントのユーザ名とパスワードを追加するサンプルを示す。

<role rolename="manager-gui" />
<user username="admin" password="admin" roles="manager-gui" />

web.xml

web.xmlは、URLとサーブレットをマッピングする配備記述子を設定するファイルである。

ウェルカムファイル

URIにディレクトリを指定した場合に開かれるファイルのことをウェルカムファイルと言います。例えば www.sample.com/ というURLを指定したときに www.sample.com/index.html が開かれたとすると、 index.html がウェルカムファイルです。ウェルカムファイルのリストは web.xml で指定することができます。

<welcome-file-list>
  <welcome-file>index.html</welcome-file>
  <welcome-file>index.htm</welcome-file>
  <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

サーブレットマッピング

サーブレットマッピングとは、あるURLにリクエストがあったときに、どのサーブレットを呼び出すか制御することです。

<web-apps>
  <servlet>
    <servlet-name>myservlet</servlet-name>
    <servlet-class>HelloWorldServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>myservlet</servlet-name>
    <url-pattern>/servlet/HelloWorldServlet</url-pattern>
  </servlet-mapping>
</web-apps>

サーブレットの初期化

リクエストを受ける前にサーブレットで初期化処理を行いたい場合、サーブレットのスーパークラスであるjavax.servlet.http.HttpServletクラスのinitメソッドをオーバーライドします。

初期化パラメータはデプロイメントディスクリプタ(/WEB-INF/web.xml)のservlet要素に記述します。記述する場所は、初期化パラメータを受け取りたいサーブレットを定義したservlet要素の中です。init-param要素の子としてparam-name要素とparam-value要素を記述します。次に定義例を示します。


<servlet>
  <servlet-name>SampleServlet</servlet-name>
  <servlet-class>com.sample.SampleServlet</servlet-class>
  <init-param>
    <param-name>host</param-name>
    <param-value>localhost</param-value>
  </init-param>
</servlet>

この例では、SampleServletの初期化パラメータとしてhostという名前でlocalhostという値を定義しています。

この初期化パラメータを受け取るにはgetInitParameterメソッドを使用します。次にinitメソッドから初期化パラメータを取得するJavaソースの例を示します。

public void init(ServletConfig sc) throws ServletException {
super.init(sc);
String host = sc.getInitParameter("host");

次にサーブレットのserviceメソッドから初期化パラメータを取得する例を示します。


public void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String host = this.getInitParameter("host");

WARファイル

Webアプリケーションに含まれるJSPおよびHTMLJavaのクラスファイルなどをひとつのファイルにまとめたものをWARファイルといいます。WARファイルは、ある決められたディレクトリ構成のものをJARファイルと同じ形式でまとめられたものです。

標準ディレクトリレイアウト

WARファイルの標準ディレクトリレイアウトを次に示す。

*.html, *.jsp, etc
HTMLやJSPのファイルを配置します。Javaスクリプトやスタイルシートファイル、画像などのようにクライアントブラウザから見ることのできるファイルもここに配置します。大きなアプリケーションの場合は、サブフォルダを作成して階層化することも可能です。
/WEB-INF/web.xml
サーブレットや初期化パラメータ等について記述したXMLファイル。
/WEB-INF/classes
サーブレットのクラスのように、このWebアプリケーションで必要とする(JARファイルとしてアーカイブしていない)Javaクラスファイル(関連リソースを含む)を配置するディレクトリ。もしクラスがパッケージとして組織されていれば、このディレクトリの下に階層ディレクトリを作成して配置します。例えば、com.mycompany.mypackage.MyServletと名づけたJavaクラスは /WEB-INF/classes/com/mycompany/mypackage/MyServlet.class として配置します。
/WEB-INF/lib
サードパーティのクラスライブラリやJDBCドライバのように、このWebアプリケーションで必要とするJARファイル(Javaクラスファイルや関連リソースを含む)を配置するディレクトリ。

myapps以下をまとめてmyapps.warというWARファイルを作成して、他のサーバーへ配布することができます。

共有ライブラリファイル

/shared/lib
ここに配置されたJARファイルは、全てのWebアプリケーションから参照することができます。共有ライブラリを配置します。

OSとJVMのプロパティを表示

Tomcatのバージョン、OSやJVMのプロパティを表示します。

http://localhost:8080/manager/serverinfo
OK - Server info
Tomcat Version: Apache Tomcat/5.0.28
OS Name: Windows 2000
OS Version: 5.0
OS Architecture: x86
JVM Version: 1.4.2_04-b05
JVM Vendor: Sun Microsystems Inc.