Tomcatメモ

とりあえずサンプルでも作ってみますか.
結構苦労しそうなヨカーン.
一応, ここ↓を参考にしてやってみた.

                                                                                                                      • -

Javaの道:Tomcat(2.プログラム配置・実行)
http://www.javaroad.jp/opensource/js_tomcat2.htm

                                                                                                                      • -

やっぱりだめだ。最初動いてたのに動かなくなった。
何でだろう?


http://localhost:8080/example/以下に自分の作ったものを表示できるようにする.

  1. $CATALINA_HOME/webapps/にexampleディレクトリを作る.
  2. $CATALINA_HOME/webapps/exampleにjspディレクトリを作る.
  3. $CATALINA_HOME/webapps/exampleにWEB-INFディレクトリを作る.
  4. $CATALINA_HOME/webapps/example/WEB-INFにclasses,libディレクトリを作る.

こんな操作になるかなあ.

$ cd $CATALINA_HOME/webapps
$ mkdir example
$ cd example
$ mkdir WEB-INF
$ cd WEB-INF
$ mkdir classes lib

そして, $CATALINA_HOME/webapps/example/WEB-INFディレクトリ内にweb.xmlを作成する.
内容はこんな感じ.

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app PUBLIC 
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
  <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>

サーブレットファイル作る毎に一々追加しなきゃいかんのかなあ, これだと.


テスト用のJSPファイルとServletファイルを用意する.
これは参考にしたサイトからまんまとってくる.
まずは, 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>" );
    }
}

こいつをコンパイルする.

$ javac HelloServlet.java

うん. 問題なくOK.
(CLASSPATHにservelt-api.jarを追加しとかないと駄目だと思う. )
JSPは, $CATALINA_HOME/webapps/example/jsp以下に配置.
サーブレットは, $CATALINA_HOME/webapps/example/WEB-INF/classes以下に配置.


そんでもって, Tomcatに登録する.
$CATALINA_HOME/conf/Catalina/localhost以下にexample.xmlを下記の内容で追加する.

<Context path="/example" docBase="~/tomcat/webapps/example" reloadable="false"/>

これで終了のはず.
あとで本当にこれが必要なのかなと思って, 一度消してやってみたら見事に動いた.
なくてもいいんじゃないかと思う.


さて動くかなあ〜?
サーブレットファイルのURL.
http://localhost:8080/example/Hello
JSPファイルのURL.
http://localhost:8080/example/jsp/HelloJsp.jsp
よし. 両方とも問題なく動作した.
テスト用だとディレクトリの内容を表示してくれた方が便利だなあ. 調べてみるか.
今の状態だとhttp://localhost:8080/example/jsp/とかにアクセスしてもエラーが出るだけ.

追記

あれっ、色々やってたら何かおかしい。
サーブレットが表示できなくなったり。
どうしたんだろう?

さらに追記

あれっ?ブラウザ、端末エミューレタ両方を再起動してみたら、
普通に動いた。どうなってんだ、これは?