톰캣 설치에 대한 글을 쓴지 1년이 다 되어가는 이 시점에 톰캣 설정에 대한 글을 쓰게 되내요. 찾아보니 톰캣 6.0도 있던데. 그런데  버전이 높다고 해서 다 좋은 것은 아닌 것 같내요. 버전 6.0에 도전해 봤는데, 실패했습니다. servlet에 대한 설정이 안되어서 포기하서 톰캣 5.5에 만족하기로 했습니다.

 어째든 이번에는 servlet을 위한 톰캣 5.5 설정을 해보겠습니다. jsp의 경우 그냥 하면 되는 것 같은데 servlet을 그냥 시도해봤는데 잘 안되고 설정을 변경해야 하는 것 같군요.

 이 글은 그냥 설정에서 끝나지 않고, HelloWorld 까지 만들어 보는데 까지 해보겠습니다.

우선 servlet을 위한 설정을 해보겠습니다. \conf\web.xml ( 저의 경우 C:\tools\apm\Tomcat 5.5\conf 디렉토리 안에 있내요. 모두 자기 상황에 맞게 디렉토리를 생각하기 바랍니다. )  파일을 수정해야 합니다. 패치된 버전마다 위치가 틀리겠지만 대략 115행에 다음과 같이 주석처리가 되어 있습니다.
==================================
<!--
    <servlet>
        <servlet-name>invoker</servlet-name>
        <servlet-class>
          org.apache.catalina.servlets.InvokerServlet
        </servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>0</param-value>
        </init-param>
        <load-on-startup>2</load-on-startup>
    </servlet>
-->
=================================
여기서 주석처리 기호  <!--  과  --> 를  제거해 줍니다. (제 말을 오해해서 주석된 전체를 지우진 말아주세요.)

대략 366행 쯤에 다음과 같이 주석처리가 되어있습니다.
================================
<!--
    <servlet-mapping>
        <servlet-name>invoker</servlet-name>
        <url-pattern>/servlet/*</url-pattern>
    </servlet-mapping>
-->
==============================
여기서도 주석처리 기호  <!--  과  --> 를  제거해 줍니다.

그러면 설정을 다 되었습니다.

이 다음 이제 HelloWorld 프로그램을 만들어보겠습니다.  \webapps 폴더안에 간단히 Test 라는 폴더를 생성합니다. 이 test라는 폴더명은 자신의 구미에 맞게 써 놓아도 됩니다. 그러나 다음 부터 하는 것은 규정이기 때문에 폴더명을 고치면 안됩니다. 다시 그 안에 WEB-INF 라는 폴더를 생성합니다. 다시 그 안에 classes 이라는 폴더를 생성합니다.
 말이 어렵나요. 결론적으로 이렇게 한다면 \webapps\test\WEB-INF\classes 라는 path가 생성됩니다. 이 안 \webapps\test\WEB-INF 라는 폴더에 \webapps\ROOT\WEB-INF 안에있는  web.xml  파일을 복사해 둡니다.

(대충 눈치 채셨겠지만 내가 원하는 폴더명을 정한 후, 그 안에 일정한 규칙을 갖추어 폴더명을 정합니다. jsp의 경우 이런 복잡한게 필요 없는것 같은데 servlet은 조금 까다롭내요. 약간의 보안을 위해서 이렇게 하는 것 같군요.)




 HelloWorld프로그램의 소스는 examples까지 설치했다면 얻을 수 있습니다. 설치안한 분들을 위해 그 소스를 올립니다.
==========================================
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class HelloWorld 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("</body>");
out.println("</html>");
}
}
===========================================
당연히 이 파일을 저장할 때는 HelloWorld.java로 적어야 합니다. 이 파일을 \webapps\test\WEB-INF\classes 안에 둡니다.
그리고 컴파일 합니다. 이 때 환경변수에 classpath가 \Tomcat 5.5\common\lib\servlet-api.jar 설정되어 있어야 합니다. 저의
경우 complile 할 때 옵션에 classpath를 설정하는 방식을 이용했습니다. 그래서
C:\programs\jdk1.5.0_12\bin\javac.exe -classpath "C:\tools\apm\Tomcat 5.5\common\lib\servlet-api.jar" "C:\tools\apm\Tomcat 5.5\webapps\MySample\WEB-INF\classes\HelloServlet.java"
라는 식으로 컴파일 합니다. (굉장히 긴니다. javac.exe가 있는 path 도 설정되어 있지 않기 때문에 이러한 방식을 이용하는데
어차피 acroeditor에서 컴파일하므로 불편한 일은 없습니다. )

이렇게 컴파일하고 나면, 이제 http://localhost:8080/test/servlet/HelloWorld 를 통해

Hello World!


라는 글을 볼수가 있습니다. 물론 tomcat이 작동하고 있어야 가능하겠죠..