IT_Programming/JSP · Servlet

Tomcat IIS howto

JJun ™ 2006. 4. 22. 16:22
Tomcat IIS howto 문서의 원본이 있는 곳: %TOMCAT_HOME%\doc\tomcat-iis-howto.html

원본 작성: Gal Shachor <shachor@il.ibm.com>
번역 작성: 김필호 (Pilho Kim) <phkim@cluecom.co.kr>
譯者 註: Tomcat 3.2.3의 하우투 문서를 번역하면서 譯者의 私見이 일부 포함되었음.
* 이 번역 문서와 관련 문서 있는 곳



이 문서는 IIS(또는 PWS)와 톰캣(Tomcat)을 연동하기 위한 방법을 설명한다. 원래의 IIS(또는 PWS)는 서블릿이나 JSP(Java Server Page)를 서비스하지 않는다. 톰캣 리디렉터 플러그인(이하 IIS-Tomcat 리디렉터 또는 톰캣 리디렉터 또는 ISAPI 리디렉터)를 설치하면 IIS(또는 PWS)가 서블릿이나 JSP에 대한 요청(request)을 받아서 Tomcat 에 전달하게 된다. 이런 방식으로 IIS(또는 PWS)는 클라이언트에게 서블릿과 JSP를 서비스한다.



문서의 관례와 가정

다음은 톰캣 기본 디렉토리 밑의 구조이다. <tomcat_home>은 그 기본 디렉토리를 의미한다.

  1. <tomcat_home>\conf - 톰캣의 여러 가지 설정 파일이 있는 곳
  2. <tomcat_home>\webapps - 웹 애플리케이션 컨텍스트들이 있는 곳
  3. <tomcat_home>\bin - 웹 서버 플러그인 등이 있는 곳

이 문서의 모든 예에서는 <tomcat_home>이 c:\jakarta-tomcat인 것으로 한다.

워커(worker)란 IIS로 부터의 작업을 넘겨받는 톰캣 프로세스로 정의한다.



지원 환경

IIS-Tomcat 리디렉터는 다음 환경에서 개발되고 테스트되었다.

  1. WinNT 4.0-i386 (인텔) SP4/SP5/SP6a (NT 서비스팩의 다른 버전에서도 동작하리라 본다.)
  2. IIS 4.0 과 PWS 4.0
  3. Tomcat 3.0 과 Tomcat 3.2.x 까지 (譯者 註: 이글을 작성하는 현재 Tomcat 3.2.3 까지 나와 있다.)

리디렉터는 요청을 톰캣 컨테이너에게 전달하기 위해 ajp12를 사용한다. 톰캣을 인-프로세스 모드로 사용하기 위한 옵션도 있다. 인-프로세스 모드에 관한 것은 인-프로세스 하우투 문서를 참조하기 바란다.



설치

Tomcat 3.2.3 용으로 미리 빌드된 IIS-Tomcat 리디렉터 서버 플러그인 isapi_redirect.dll 은 Tomcat 바이너리가 있는 곳에서 win32/i386 를 찾아가면 구할 수 있다. Netscape 사용자는 dll 파일을 다운로드하지 못할 수도 있는데 그런 경우에는 zip 파일을 다운로드한다. (譯者 註: 이 부분은 원본 문서가 미처 수정되지 못한 것 같다. 이 글을 쓰고 있는 현재 위의 웹 페이지에 가봐야 Tomcat 3.2.3 용으로 압축한 *.zip 파일이 없다.)

아니면 Tomcat 3.2.3 의 소스를 구하여 이 리디렉터를 직접 빌드할 수도 있다. (譯者 註: Visual C++ 6.0 이 있어야 컴파일할 수 있다.)

다음은 톰캣 리디렉터의 세 가지 구성 요소이다.

  1. isapi_redirect.dll
    IIS 서버측 플러그인.
    빌드된 DLL 을 구해도 되고, 소스를 직접 빌드하여 써도 된다. (빌드하기 설명 절 참조.)

  2. workers.properties
    worker(즉, Tomcat 프로세서)에 의해 사용될 호스트와 포트를 기록하는 설정 파일.
    workers.properties의 한 예는 <tomcat_home>\conf 디렉토리에 있다.

  3. uriworkermap.properties
    URL-Path 패턴을 worker에 매핑해 주는 파일.
    uriworkermap.properties의 한 예도 <tomcat_home>\conf 디렉토리에 있다.


설치 작업에서는 다음 일을 한다.

  1. /examples 컨텍스트를 갖도록 ISAPI 리디렉터 설정하고, IIS가 서블릿을 서비스하는지 테스트한다.
  2. 더 많은 컨텍스트를 설정한다.


ISAPI 리디렉터 설정하기

이 문서에서는 isapi_redirect.dll의 위치가 c:\jakarta-tomcat\bin\win32\i386\isapi_redirect.dll 이고, 속성(property) 파일들을 c:\jakarta-tomcat\\conf에 둔 것으로 간주한다.

  1. 레지스트리 편집기에서
    "HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Jakarta Isapi Redirector\1.0"이라는 이름의 새 레지스트리를 생성한다.

  2. extension_uri라는 이름과 /jakarta/isapi_redirect.dll이라는 값을 추가한다.

  3. log_file이라는 이름과 접속 기록이 저장될 파일명(예: c:\jakarta-tomcat\logs\isapi.log)을 추가한다.

  4. log_level이라는 이름과 접속 기록 등급을 위한 값(예: debug, inform, error, emerg 중 하나)을 추가한다.

  5. worker_file이라는 이름과 workers.properties에 대한 전체 경로 c:\jakarta-tomcat\conf\workers.properties를 값에 추가한다.

  6. worker_mount_file이라는 이름과 uriworkermap.properties에 대한 전체 경로 c:\jakarta-tomcat\conf\uriworkermap.properties를 값에 추가한다.

  7. IIS 관리자 컨솔(MMC, Microsoft Management Console)을 이용하여 새 가상 디렉토리를 하나 IIS/PWS 웹사이트에 만든다. 이 가상 디렉토리의 이름은 반드시 jakarta로 해야 하며, 이것의 실제 경로는 isapi_redirect.dll을 갖다 놓은 디렉토리(예: c:\jakarta-tomcat\bin\win32\i386)여야 한다. 이 새 가상 디렉토리를 생성할 때 반드시 실행(X) 옵션을 체크해 놓아야 한다.

  8. IIS 관리자 컨솔(MMC)을 이용하여 isapi_redirect.dll을 IIS/PWS 웹사이트의 필터로 추가한다. 필터의 이름은 태스크를 반영해야 한다. (원 저자는 jakarta라는 이름을 사용한다.) 그 실행 파일의 경로를 원 저자는 c:\jakarta-tomcat\bin\win32\i386\isapi_redirect.dll로 하였다.
    웹서버가 PWS인 경우에는 regedit를 실행하여 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\W3SVC\Parameters에 "Filter DLLs" 키를 추가하고 편집해야 한다. 여기서 isapi_redirect.dll에 대한 전체 경로를 적어야 한다. 여러 개의 dll 파일을 쓸 경우에는 각 경로를 콤마 구분자(,)로 구분하여 적는다.

  9. IIS를 재시작한다. (IIS를 중지한 후 시작).
    jakarta 필터가 초록색 위쪽 화살표로 표시되어 있는지 확인한다.

    NT/2000의 경우:
    IIS 관리자 컨솔(MMC)에서 stop/start는 IIS의 서비스를 실질적으로 멈추고 시작하지 못한다. 시작 메뉴 -> 설정 -> 제어판 -> 서비스
    를 선택하여 "World Wide Web Publishing Service"라고 된 것을 중지시켰다가 재시작하여야 한다. (net 명령으로 재시작하는 방법도 있다.)

    윈98의 경우:
    도스창에서
        cd \WINDOWS\SYSTEM\inetsrv
    하고,
        pws /stop
    을 실행한다. (그냥 stop 버튼만 누르면 DLL과 log 필터들이 잠겨(locked) 있어서 PWS가 DLL을 풀어 놓지 않기 때문에 반드시 이렇게 해서 PWS를 종료해야 한다.) 그 다음
        pws
    를 실행하여 개인 웹(PWS) 관리자 창에서 "시작" 버튼을 눌러 PWS를 다시 시작한다.

이제 다 되었다. 톰캣을 새로 시작하여 IIS가 /examples라는 컨텍스트를 인식하는지 테스트한다. (즉, http://localhost/examples/jsp/index.html 를 방문하여 테스트한다.) 만일 작동이 잘 안되면, 문제 해결을 위해 도움을 주는 고장 수리 절을 참조하라.

譯者 註: 잘 안되더라도 뒤에 설명하는
         워커(worker)의 고급 설정법을 읽어 보면 해결할 수 있다.


컨텍스트(context) 추가하기

examples 컨텍스트는 설치가 제대로 되었는지 확인하는데 유용하다. 그러나 여러분들 스스로 필요한 컨텍스트를 추가할 줄 알아야 한다. 컨텍스트를 추가하려면 두 가지 작업이 요구된다.

  1. 톰캣에 컨텍스트를 추가한다. (여기서는 이에 관해 언급하지 않는다.)
  2. ISAPI 리디렉터에 컨텍스트를 추가한다.

ISAPI 리디렉터에 컨텍스트를 추가하는 것은 간단하다. 다만 uriworkermap.properties 파일에 아래 처럼 추가하기만 하면 된다.

    /context/*=worker_name

워커와 이들 이름은 workers.properties에서 정의한다. 워커의 디폴트 속성 파일 workers.properties 에는 미리 설정된 한 개의 worker(즉 "ajp12" 라는 이름의 워커)가 있다. 그러므로 이를 사용할 수 있다. 예를 들어, "shop" 이라는 이름의 컨텍스트를 추가하고자 한다면, uriworkermap.properties 파일에 다음 한 줄을 추가한다.

    /shop/*=ajp12

uriworkermap.properties를 수정하고 나면 IIS를 재시작해야 IIS가 새 컨텍스트를 서비스한다. 위의 설치 단계 9에서 언급했듯이 제어판의 서비스를 이용해서 재시작해야 한다. IIS 관리자 컨솔(MMC)에서의 재시작은 uriworkermap.properties이 변경된 것을 알아차리지 못한다.

Tomcat 3.2.3은 매번 실행될 때 마다 uriworkermap.properties-auto라는 파일을 자동적으로 새로 만든다. 이 파일은 톰캣이 실행되고 있는 동안 서비스될 개개의 컨텍스트에 대한 설정을 포함하고 있다. 각 컨텍스트는 톰캣이 서블릿과 JSP 요청을 처리하게 해주지만, 정적인 컨텐츠(html, 이미지, 사운드 등)는 IIS가 처리하는 곳에 두어야 한다. 각 컨텍스트는 톰캣이 모든 컨텍스트의 요청을 처리할 수 있도록 고치기 좋게 주석 처리되어 있다. 이 파일은 이름을 바꾸어도 되며(그러면 톰캣이 재시작하더라도 자동으로 변경되지 않는다.), 이 세팅의 주석을 해제하거나 다르게 고쳐 써도 된다. 이 파일은 worker_mount_file을 셋팅할 때 또 사용해도 된다.



리디렉터 빌드하기

리디렉터는 Visual C++ 6.0 으로 개발되었다. 그러므로 아래의 빌드 과정을 따라 하려면 이 환경이 필수적이다.

빌드의 각 단계:

  1. 컨솔에서 우선 isapi 플러그인이 있는 디렉토리로 이동한다.
  2. 다음 명령을 실행한다.
        MSDEV isapi.dsp /MAKE ALL
    msdev가 PATH에 있지 않으면, msdev.exe의 전체 경로를 입력하여 실행한다.

위와 같이 하면 리디렉터 플러그인의 릴리즈 버전과 디버그 버전이 동시에 빌드된다.

다른 방법으로는 msdev 에서 isapi 워크스페이스 파일(isapi.dsw)을 열고, 빌드 메뉴에서 빌드한다.



리디렉터 플러그인은 어떻게 동작하나?

  1. IIS-Tomcat 리디렉터는 IIS 플러그인(즉, 필터 + 익스텐션)이다. IIS가 리디렉터 플러그인을 로드하고, 개별적인 요청(request)이 있을 때 마다 그 필터 함수를 호출한다.
  2. 그러면 필터는 요청된 URL을 uriworkermap.properties 파일 내에 정의된 URL 경로들과 비교 검사한다. 현재의 요청이 그 파일 내의 URL 경로 목록중 하나와 부합하면, 필터는 그 요청을 익스텐션에 전송한다.
  3. 익스텐션은 요청(request)의 파라미터를 수집하여 이를 적당한 워커에게 ajp12 프로토콜을 써서 전달(forward)한다.
  4. 익스텐션은 워커로 부터 응답(response)을 수집하여 이를 브라우저에게 출력한다.



컨텍스트(context)의 고급 설정법

비록 워커이 정적 컨텐츠(html, gif, jpeg 등등)를 서비스할 수 있다 하더라도 때로는 IIS가 이들을 서비스하개 하는 것이 더 좋다. 예를 들어, examples 컨텍스트에 있는 html, gif 파일들을 생각해 보자. 톰캣 프로세스가 이들을 서비스할 필요가 없다. 이들은 IIS가 직접 서비스해도 충분하다.

톰캣 컨텍스트에 있는 정적인 파일들을 IIS 가 서비스하게 만들려면 다음이 필요하다.

  1. IIS가 톰캣 컨텍스트를 알도록 설정한다.
  2. IIS를 위해 리디렉터가 정적인 파일들을 건드리지 않게 설정한다.

톰캣 컨텍스트를 IIS의 한 가상 디렉토리로 잡아준다. 예를 들어, /example 라는 IIS 가상 디렉토리를 하나 만들어 d:\tomkat\webapps\examples라는 디렉토리를 커버하게 한다.

리디렉터의 설정은 다소 까다롭다. 톰캣이 처리해 주길 희망하는 URL 경로 유형들(보통은 JSP, 서블릿 파일들)을 정확하게 규정할 필요가 있다. 그렇게 하자면 uriworkermap.properties 파일을 수정해야 한다. examples 컨텍스트의 경우를 예로 들면, 이 파일에서 다음 한 줄

    /examples/*=ajp12
    /examples/*.jsp=ajp12
    /examples/servlet/*=ajp12
로 고치면 된다.

알다시피 위의 두 번째 설정이 더 명확한 방법이다. 그것은 리디렉터가 /examples/servlet/ 아래에 있는 리소스와 /examples/ 아래에서 .jsp 로 끝나는 이름의 리소스만을 리디렉트하도록 지시하는 것이다. 이는 각 컨텍스트를 위해 uriworkermap.properties-auto 파일에 자동으로 기록되는 것과 비슷하다.

다음 한 줄을 추가함으로써 더욱 명확하게 할 수 있다.

    /example/servletname=ajp12 

이는 리디렉터가 /example/servletname이라는 URL 경로를 ajp12 라는 이름의 톰캣에게 리디렉트하도록 지시하는 것이다.



WEB-INF 디렉토리의 보안

모든 서블릿 애플리케이션(컨텍스트)은 WEB-INF라는 특별한 디렉토리 밑에 있다. 이 디렉토리는 민감한 설정 자료들과 자바 클래스들을 포함하고 있으며, 웹 방문자에게 보여져서는 안되는 부분이다. IIS 관리자 컨솔(MMC)을 사용하여 WEB-INF 디렉토리로의 웹 방문자의 접근을 막을 수 있다. 그러나 이렇게 하는 것은 관리자(administrator)가 이를 기억하고 있어야 하므로 불편하다. URL 경로에 WEB-INF 가 포함되어 있는 모든 요청을 거부하게 함으로써 리디렉터 플러그인이 WEB-INF 디렉토리를 자동으로 보호할 필요가 있다.




워커(worker)의 고급 설정법

때로는 각각의 컨텍스트에 대해 별도의 톰캣 프로세스로 서비스해야 할 경우(예를 들어, 서로 다른 기계로 분산시켜 놓는 경우)도 있다. 이를 실현할려면 워커를 여러 개 지정하고, 각 컨텍스트에 적합한 한 개의 워커를 짝지어 준다.

워커의 지정은 workers.properties 파일에서 한다. 이 파일에는 다음 두 가지 유형의 항목이 있다.

  1. 지정된 모든 워커의 목록을 갖는 항목. 즉,
        worker.list=ajp12, ajp12second
  2. 각 worker 에 짝이 될 호스트와 포트를 정의하는 항목.
        worker.ajp12.host=localhost
        worker.ajp12.port=8007
        worker.ajp12second.host=otherhost
        worker.ajp12second.port=8007

위의 예에서는 두 개의 워커를 지정하고 있다. 이것이 이들 워커가 각각 서로 다른 컨텍스트를 서비스하게 하는 설정법이다. 예로 uriworkermap.properties 파일 내의 다음 부분을 보도록 하자.

    /examples/*=ajp12
    /webpages/*=ajp12second 

위와 같이 하면, examples 컨텍스트는 ajp12라는 워커에 의해 서비스되고, webpages 컨텍스트는 ajp12second라는 워커에 의해 서비스된다.



고장 수리

ISAPI 리디렉터를 처음 설치한 경우 동작하지 않기가 십상이다. 이럴 경우 그런 문제를 해결하기 위한 몇 가지 방안을 여기 제시한다. 있을 수 있는 모든 문제를 다 해결하는 방안을 제시하는 것은 아니고, 많이 범하는 실수를 해결하는데 도움이 되는 과정을 소개할 뿐이다. 이 단계를 거치는 동안 혹 실수를 범하면, 앞의 ISAPI 리디렉터 설정하기의 마지막 단계(즉, 9단계)에서 설명한 대로 IIS 서비스를 재시작해야 한다.

참고: 이 단계들은 여러분의 worker_mount_file이 수정되지 않은 uriworkermap.properties 원본 파일을 가리키고 있는 것으로 간주한다. 만일 worker_mount_file가 수정된 uriworkermap.properties 파일을 가리키고 있다든가 uriworkermap.properties-auto 파일을 가리키고 있는 경우에는 결과가 다를 것이다. 또한 다음의 각 단계를 거치기 전에, 톰캣에 직접 접속(테스트 URL: http://localhost:8080/examples/jsp/)하여 "/examples" 컨텍스트가 정상적으로 잘 작동하고 있다고 가정한다.


윈도우 98

  1. 웹사이트가 제대로 접속되고 있는지 확인한다.
    PWS 4.0의 경우에는 PWS 관리자의 고급 옵션에서 "웹사이트 활동 로그 저장(L)" 가 체크되어 있는지 확인한다.
  2. IIS 서비스와 톰캣을 시작한다.
  3. log_file 설정에서 지정한 ISAPI 리디렉터 로그 파일의 존재 유무를 확인한다. 만일 없으면 다음을 체크한다.
    1. "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\W3SVC\Parameters" 키에서 설정한 "Filter DLLs"을 점검하여 그 경로가 맞게되어 있는지 확인한다.
    2. "HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Jakarta Isapi Redirector\1.0" 키의 철자를 한 글자씩 잘 점검한다. 중요하지는 않지만, 틀린 글자는 isapi_redirect.dll가 레지스트리 설정을 찾지 못하게 한다.
    3. log_file 설정에서 이름, 데이터에 철자를 잘 점검한다. 또한 로그 파일이 저장될 경로가 실지로 있는지도 확인한다.
    위의 것들이 모두 맞다면, ISAPI 리디렉터가 로그 파일을 마땅히 생성하여야 한다.
  4. 브라우저로 "http://localhost/examples/jsp/index.html" 을 방문해 본다. 톰캣 3.2.x는 대소문자를 구별하므로 대소문자에도 주의한다. URL에서 "localhost" 이후의 모든 글자는 소문자여야 한다. 만일 페이지가 보이지 않으면, (접속 기록을 보기 위해) PWS 서비스를 중지한다. 그 다음 SYSTEM/LogFiles/W3SVC1 에 있는 PWS 로그 파일의 제일 끝 줄을 조사한다.
    1. 만일 그 마지말 줄이 GET "/examples/jsp/index.html HTTP/1.1" 404, 이런 문장을 포함하고 있으면, "/examples" 컨텍스트에 대한 요청을 처리해야 함을 ISAPI 리디렉터가 인식하고 있지 못하는 것이다. 다음을 점검한다.
      1. extension_uri 이름의 철자를 점검한다.
      2. worker_file 설정에서 철자, 이름, 데이터를 점검한다.
      3. worker_mount_file 설정에서 철자, 이름, 데이터를 점검한다.
      이들이 모두 맞다면, "/examples"에 대한 요청을 처리해야 함을 ISAPI 리디렉터가 마땅히 인식하고 있아야 한다.
    2. 만일 그 마지말 줄이 GET "/jakarta/isapi_redirect.dll HTTP1.1" 이런 문장을 포함하고 있으면, ISAPI 리디렉터가 그 요청을 처리해야 함을 알고는 있지만, 그 요청에 서비스하기 위해 톰캣에 연결하지 못한 것이다.
      1. 만일 GET "/..." 뒤의 숫자가 404면, 다음을 점검한다.
        1. URL을 바로 입력했는지 확인한다.
        2. 생선된 가상 디렉토리 이름이 "jakarta"인지 확인한다. PWS 관리자에 (인용부호 없이) "/jakarta"라고 되어 있아야 한다.
        3. extension_uri 데이터가 (인용부호 없이) "/jakarta/"로 시작하는지 확인한다.
      2. 만일 GET "/..." 뒤의 숫자가 500이면, 다음을 점검한다.
        1. extension_uri 설정에서 "/jakarta/" 뒤에 "isapi_redirect.dll" 가 있는지 확인한다.
        2. workers.properties 파일을 점검하여 worker.ajp12.port에서 정한 포트 번호가 "Apache AJP12 support"을 위해 server.xml 파일에서 정한 포트 번호와 일치하는지 확인한다.
      3. 만일 GET "/..." 뒤의 숫자가 200이거나 403이면, PWS 관리자의 고급 옵션에서 jakarta 가상 디렉토리 설정에 "실행" 옵션을 체크해 놓았는지 확인한다.
    위의 것들이 모두 맞다면, index.html 페이지가 여러분의 브라우저에 나와야 한다. 또 이 페이지에서 JSP 예제룰 실행시키는 Execute 링크를 클릭한 페이지도 나와야 한다.


윈도우 NT

  1. 웹사이트가 제대로 접속되고 있는지 확인한다.
    PWS 4.0의 경우에는 PWS 관리자의 고급 옵션에서 "웹사이트 활동 로그 저장(L)" 이 체크되어 있는지 확인한다. (譯者 註: NT 워크스테이션에서는 IIS 대신 PWS가 동작한다.)
  2. World Wide Web Publishing 서비스를 시작하고, 톰캣도 시작한다.
  3. log_file 설정에서 지정한 ISAPI 리디렉터 로그 파일의 존재 유무를 확인한다. 만일 없으면 다음을 체크한다.
    1. IIS 관리자 컨솔(MMC)에서 그 필터의 설정에서 "실행" 을 체크하고, 그 경로가 맞는지 확인한다.
    2. "HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Jakarta Isapi Redirector\1.0" 키의 철자를 한 글자씩 잘 점검한다. 중요하지는 않지만, 틀린 글자는 isapi_redirect.dll가 레지스트리 설정을 찾지 못하게 한다.
    3. log_file 설정에서 이름, 데이터에 철자를 잘 점검한다. 또한 로그 파일이 저장될 경로가 실지로 있는지도 확인한다.
    위의 것들이 모두 맞다면, ISAPI 리디렉터가 로그 파일을 마땅히 생성하여야 한다.
  4. 추가했던 jakarta 필터를 점검하고 그 상태가 초록색 위쪽 화살표를 보여 주는지 확인한다. 만일 그렇지 않으면, 다음을 점검한다.
    1. worker_file 설정에서 철자, 이름, 데이터를 점검한다.
    2. worker_mount_file 설정에서 철자, 이름, 데이터를 점검한다.
    이들이 모두 맞다면, 여타 설정에서 잘못이 없는 한 촉록색 위쪽 화살표가 나타나야 한다.
  5. 브라우저로 "http://localhost/examples/jsp/index.html" 을 방문해 본다. 톰캣 3.2.x는 대소문자를 구별하므로 대소문자에도 주의한다. URL에서 "localhost" 이후의 모든 글자는 소문자여야 한다. 만일 페이지가 보이지 않으면, SYSTEM32/LogFiles/W3SVC1 에 있는 IIS 로그 파일의 제일 끝 줄을 조사한다.
    1. 만일 그 마지말 줄이 GET "/jakarta/isapi_redirect.dll HTTP1.1" 이런 문장을 포함하고 있어야 한다. 이는 ISAPI 리디렉터가 그 요청을 처리해야 함을 알고는 있음을 의미한다.
      1. 만일 GET "/..." 뒤의 숫자가 404면, 다음을 점검한다.
        1. URL을 바로 입력했는지 확인한다.
      2. 만일 GET "/..." 뒤의 숫자가 500이면, 다음을 점검한다.
        1. 가상 디렉토리 이름이 "jakarta"라고 옳게 되어 있는지 확안한다.
        2. extension_uri 설정이 옳게 되어 있는지 확안한다.
        3. workers.properties 파일을 점검하여 worker.ajp12.port에서 정한 포트 번호가 "Apache AJP12 support"을 위해 server.xml 파일에서 정한 포트 번호와 일치하는지 확인한다.
      3. 만일 GET "/..." 뒤의 숫자가 200이거나 403이면, IIS 관리자 컨솔(MMC)에서 가상 디렉토리 jakarta 의 설정 중에 "실행(X)" 옵션이 체크되어 있는지 확인한다.
    위의 것들이 모두 맞다면, index.html 페이지가 여러분의 브라우저에 나와야 한다. 또 이 페이지에서 JSP 예제룰 실행시키는 Execute 링크를 클릭한 페이지도 나와야 한다.



피드백

버그 보고나 추가 정보 등의 피드백은 tomcat-user@jakarta.apache.org 에게로.