さぁぶれっとを作ろう (3)

h-hirai2008-01-03


あー、やっと動かせた。結局、Javaの道:Tomcat(3.プログラム配置・実行) というサイトを参考にしたら割合あっさり動いた。

今、使っている iBook のホームディレクトリ (/Users/hirai/) には Sandbox/ というディレクトリが掘ってあって、そこでいろいろ遊んでいるわけだけど、その下にさらに以下のようにディレクトリを掘る。

$ cd ~/Sandbox
$ mkdir -p java/servlet/sandbox/WEB-INF/classes

で、以下のような内容のファイル、~/Sandbox/java/servlet/sandbox.xml を書いて、これを /opt/local/share/java/tomcat5/conf/Catalina/localhost/ にコピーする。最初にホームディレクトリの下に作る意味は特にない。

<?xml version="1.0" encoding="UTF-8"?>

<Context path="/sandbox"
         docBase="/Users/hirai/Sandbox/java/servlet/sandbox"
         reloadable="true" />

次に、~/Sandbox/java/servlet/sandbox/WEB-INF/web.xml を書く。

<?xml version="1.0" encoding="UTF-8"?>

<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>

~/Sandbox/java/servlet/sandbox/WEB-INF/classes/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("<head>");
        out.println("<title>Hello World!</title>");
        out.println("</head>");
        out.println("<body>");
        out.println("<h1>Hello World!</h1>");
        out.println("<p>");
        out.println(new java.util.Date());
        out.println("</p>");
        out.println("</body>");
        out.println("</html>");
    }
}
$ cd ~/Sandbox/java/servlet/sandbox/WEB-INF/classes/
$ javac -classpath /opt/local/share/java/tomcat5/common/lib/servlet-api.jar HelloServlet.java

Tomcat を起動。(終了するには同じディレクトリにある shutdown.sh を実行する)

$ sudo /opt/local/share/java/tomcat5/bin/startup.sh
Using CATALINA_BASE:   /opt/local/share/java/tomcat5
Using CATALINA_HOME:   /opt/local/share/java/tomcat5
Using CATALINA_TMPDIR: /opt/local/share/java/tomcat5/temp
Using JRE_HOME:       /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home

で、http://localhost:8080/sandbox/Hello にブラウザでアクセスすると、上の画像のような画面が見える。あー、やれやれ、やっと動いた。