Revised: 26th/Apr./2008; Since: 25th/Nov./2002
server.xmlの編集WARを${CATALINA_HOME}/webapps以外の場所へデプロイしてみましょう。"${CATALINA_HOME}/conf/server.xml"をテキストエディタで開いてください。ここで、${CATALINA_HOME}はTomcatをインストールしたディレクトリのパス名です。ここでは、"C:\Program
Files\Apache Software Foundation\Tomcat 6.0"になっています。
次の例は、"D:\java\webappl\helloworld.war"に作成したドキュメント・ベース(または、コンテキスト・ルート)に対して、ブラウザからhttp://localhost:8080/myWebApplでアクセスできるようにする場合の例です。ここで、/myWebApplをコンテキスト・パスと呼びます。
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
:
<!-- My Context Path: D:\java\webappl as /myWebAppl -->
<Context path="/myWebAppl" docBase="D:\java\webappl\helloworld.war"
reloadable="true" crossContext="true" />
:
</Host>
Tomcatを再起動してください。server.xmlの更新の反映には、Tomcatの再起動が必要です。
server.xmlへの更新が反映されたか確認します。動作を確認するために、上で作ったドキュメント・ベースに、次のコードを持つindex.htmlを置いてください。
<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" >
<head>
<meta http-equiv="content-type" content="text/html; charset=shift_jis" />
<title>Hello, World!</title>
</head>
<body>
<h1>Hello, World!</h1>
<p>ウェブ・アプリケーションの世界へようこそ!これはサンプル・ドキュメントです。</p>
<p><a href="./Welcome">サーブレットの起動</a></p>
</body>
</html>
保存時に文字コードが選べれば Shift_JIS を選択してください。
ブラウザから次の URL を要求してください。実際には、アドレス欄に以下の URL を入力して enter キーを押してください。
http://localhost:8080/myWebAppl/[localhost:8080]
無事に HTML 文書が表示されれば成功です。サーブレットは、まだ作ってないので404 Not Foundが返されます。
ドキュメント・ベース配下にサブ・ディレクトリを自由に作って動作を確認してください。例えば、ドキュメント・ベース配下の"/subdir/hello.html"へのアクセスは
"http://localhost:8080/myWebAppl/subdir/hello.html"
になります。ここにmyWebApplはserver.xmlで設定したコンテキスト・パスです。
次にドキュメント・ベース配下の"WEB-INF/classes"に、次のコードを持つHelloWorld.javaを作成し、コンパイル/実行してください。
import java.util.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloWorld extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
// 送信文字コードのセット
res.setContentType("text/html; charset=Shift_JIS");
// 出力ストリームの取得
PrintWriter out = res.getWriter();
String title = "Hello World!";
Date date = new Date();
// 出力ストリームへの書き込み
out.println("<html lang=\"ja\">");
out.println("<head><title>" + title + "</title></head>");
out.println("<body>");
out.println("<h1>" + title + "</h1>");
out.println("<p>現在時刻:" + date + "</p>");
out.println("</body></html>");
// 出力ストリームのクローズ
out.close();
}
}
次のコードは、 Windows のコマンド・プロンプトでの、上記のHelloWorld.javaのコンパイルです。
D:\java\webappl\helloworld.war\WEB-INF\classes>javac -classpath "C:\Program File s\Apache Software Foundation\Tomcat 6.0\lib\servlet-api.jar" HelloWorld.java D:\java\webappl\helloworld.war\WEB-INF\classes>
-classpathフラグの引数 ""C:\Program
Files\Apache Software Foundation\Tomcat 6.0\lib\servlet-api.jar""
は、Tomcat と共に導入されたserver-api.jarへの絶対パスです。インストール・ディレクトリを${CATALINA_HOME}と書けば、"${CATALINA_HOME}\lib\servlet-api.jar"
になります。これはOSの環境変数CLASSPATHにセットしておけば不要です。
web.xmlの作成このサーブレットにアクセスするパス(URLパターン)を、"WEB-INF/web.xml"に記述します。次のソースをコピーして、"WEB-INF/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>HelloWorld</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/Welcome</url-pattern>
</servlet-mapping>
</web-app>
Tomcatは、web.xmlの編集結果は即時反映しません。[Webアプリケーションマネージャ]から[再ロード]を選ぶか、Tomcatを再起動することで反映されます。
![]() |
| 図:再ロード結果 |
|---|
次の画像は、ブラウザから"http://localhost:8080/myWebAppl/Welcome"を要求したときの実行結果です。
![]() |
図:HelloWorldの実行結果 |
|---|