さぁぶれっとを作ろう (3)
あー、やっと動かせた。結局、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 にブラウザでアクセスすると、上の画像のような画面が見える。あー、やれやれ、やっと動いた。