Javaの道 Javaに関する
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道 > オープンソース > Tomcat −2.プログラム配置・実行
更新日:2012/7/22
Tomcat−2.プログラム配置・実行
ここでは、Tomcatへプログラムを配置し、実行するまでの手順を解説します。Javaアプリ開発では、プログラムを実行環境(アプリケーションサーバなど)へ配置することをデプロイメントと呼んでいます。

実行環境
・WindowsXP Home Edition
・Tomcat 6.0.10
・JDK 1.6.0
手順概要
Tomcatへのプログラム配置・実行手順は以下のようになります。
1. JSP/サーブレットプログラムを作成する。
2. サーブレットプログラムをコンパイルする。
3. プログラムを配置する。
4. Tomcatの設定を行う。
5. プログラムを実行する。
1.JSP/サーブレットプログラムの作成
実行するJSP/サーブレットプログラムを作成します。今回は実行すると現在の時刻を表示するプログラムを使用します。JSP/サーブレットの記述方法、文法の解説はここでは省略します。
JSPプログラム(HelloJsp.jsp)
<HTML>
<BODY>
<%= new java.util.Date() %>
</BODY>
</HTML> 
サーブレットプログラム(HelloServlet.java)
import java.io.*;
import java.text.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class HelloServlet extends HttpServlet {
  public void doGet(HttpServletRequest request,
                    HttpServletResponse response)
              throws IOException, ServletException {

    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    out.println("<HTML>");
    out.println("<BODY>");
    out.println(new java.util.Date());
    out.println("</BODY>");
    out.println("</HTML>");
  }
}
2.サーブレットプログラムのコンパイル
サーブレットプログラムをコンパイルします。JSPはTomcatにより、自動的にコンパイルされるため、コンパイルの必要はありません。

ソースファイル(HelloServlet.java)があるフォルダに移動し、javacコマンドでコンパイルします。コンパイルする際は、サーブレット用のクラスライブラリ(servlet-api.jar)を-classpathオプションに指定します。
※-classpathの詳細はJavaの道(クラスパス)を参照してください。

C:\Java\source\TEST>javac -classpath "C:\Program Files\Apache Software Foundatio n\Tomcat 6.0\lib\servlet-api.jar";. HelloServlet.java
※Tomcat 6.0など指定PATHに空白があるため""でPATHを囲んでいます。

C:\Java\source\TEST>

3.プログラムの配置
JSP/サーブレットを含むJ2EEでは、アプリケーションで使用するプログラムの配置場所、配置するディレクトリ名が定められています。J2EEで定められるディレクトリ構成は以下のようになります。

【J2EE仕様で定められているプログラム配置構成】
Tomcat_プログラムの配置_1
ルートディレクトリはどこに設置しても良いですが、通常Tomcatインストールディレクトリ内のwebappsディレクトリ配下に設置します。今回の解説で使用するプログラムの配置構成は以下のように行います。Tomcatのインストールティレクトリを「$CATALINA_HOME」で表します。
1. $CATALINA_HOME\wabapps配下に、ルートディレクトリjavaroadを作成します。
2. ルートディレクトリ配下にJSPファイルを格納するディレクトリjspdirを作成し、HelloJsp.jspファイルを設置します。
3. ルートディレクトリ配下にWEB-INFディレクトリ、その配下にclassesディレクトリ、libディレクトリを作成します。
4. classesディレクトリにHelloServlet.javaをコンパイルしてできたHelloServlet.classファイルを設置します。
5. WEB-INFディレクトリ配下にweb.xmlファイルを作成します(設定は後で行います)。
【解説で使用するプログラム配置構成】
Tomcat_プログラムの配置_2
4.Tomcatの設定
Tomcatはコンテキストと言う単位で、アプリケーションを管理します。プログラムを配置した後は、配置した領域をコンテキストとしてTomcatに設定します(コンテキストの設定は必須ではありません。デフォルトのコンテキストの振る舞いを変えたい場合に設定が必要です。今回は、デフォルトの振る舞いから変更はありませんが、一応設定を行います。)。

Tomcat5.0からコンテキストの設定方法が変わりました。コンテキストの設定は$CATALINA_HOME\conf\[engine name]\[host name]ディレクトリ配下にコンテキスト名.xmlと言うXMLを作成して行います。[engine name]、[host name]はserver.xmlに設定されているengine名、host名です。デフォルトの設定は[engine name]が[Catalina]、[host name]が[localhost]です。今回はコンテキスト名をjavaroadにするため、設定ファイルは$CATALINA_HOME\conf\Catalina\localhostディレクトリ配下の、javaroad.xmlファイルとなります。
javaroad.xmlの設定
javaroad.xmlファイルを作成し、以下の設定内容を記述します。
<Context path="/javaroad"
 docBase="C:\Program Files\Apache Software Foundation
          \Tomcat 6.0\webapps\javaroad"
 reloadable="false"/>
pathはアクセスされるときのパス名を表します。「/javaroad」と指定するとhttp://localhost:8080/javaroad/でアクセスできます。
docBaseはコンテキストのルートディレクトリを指定します。
reloadableはプログラムに変更があった場合、自動的に再読み込みを行うかを設定します。trueに設定すると動作時に再読み込みが必要なファイルがあるかを確認するため動作が遅くなります。開発時以外はfalseに設定します。falseの場合、プログラムを再読み込みさせたい場合はTomcatの再起動が必要になります。
この他にもいくつかのパラメータがあります。詳細はTomcat Server Configuration Referenceを参照してください。
Tomcatの最新バージョンでは、docBaseで指定するPATH名がappBaseの配下にある場合は、path、docBaseとも明示的に指定する必要はありません。指定した場合は、Tomcatのログに警告文(警告: A docBase [docBaseのパス名] inside the host appBase has been specified, and will be ignored.)が生成されます。appBaseはTomcatのデフォルトの設定では$CATALINA_HOME/webappsです。
web.xmlの設定

コンテキストを設定した後は、コンテキスト内のアプリケーションの動作を設定します。 コンテキスト内のアプリケーションの動作は$CATALINA_HOME\javaroad\WEB-INFディレクトリ配下のweb.xmlファイルに記載します。

 

web.xmlはサーブレットファイルのURL指定、セキュリティ管理、初期化パラメータ設定などコンテキスト内のアプリケーション動作に関わる設定をします。ここでは、サーブレットファイルのURL指定について解説します。以下の設定をweb.xmlに記載します。

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
         http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
         version="2.4">

  <servlet>
    <servlet-name>Hello</servlet-name>
    <servlet-class>HelloServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Hello</servlet-name>
    <url-pattern>/Hello</url-pattern>
  </servlet-mapping>

</web-app>
<servlet>・・・</servlet>
<servlet>タグには<servlet-class>タグにサーブレットのクラス名「HelloServlet」、<servlet-name>タグに、それにマッピングするキーワード「Hello」を指定します。

<servlet-mapping>・・・</servlet-mapping>
<servlet-mapping>タグでは、<servlet-name>タグには上記と同様に「Hello」、<url-pattern>タグにはそれにマッピングするURLのキーワード「/Hello」を指定します。

上記の2つのタグを設定することで、どのURLパターンからどのサーブレットクラスを呼び出すかが指定できます。URLに/Helloと指定すると(ここでは、http://localhost:8080/javaroad/Hello)、<servlet-name>を介してマッピングされたHelloServletクラスが呼び出されます。
5.プログラムの実行

Tomcatを起動させ、JSP/サーブレットプログラムそれぞれにアクセスします。

 

JSPプログラム(HelloJsp.jsp)
JSPプログラムにアクセスする場合は、JSPファイルを設置したパス名をURLに指定します。
http://localhost:8080/javaroad/jspdir/HelloJsp.jsp

 

サーブレットプログラム(HelloSerlvet.class)
サーブレットプログラムにアクセスする場合は、web.xmlで指定したパス名をURLに指定します。
http://localhost:8080/javaroad/Hello

 

それぞれ、以下のように現在の時刻を表すメッセージが表示されるとプログラム配置・実行の成功です。

Tomcat_実行結果



このページのトップへ
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道_CopyrightJavaの道