톰캣을 WAS 로 사용하여 웹사이트를 개발하는 중입니다. 톰캣 단독 구조로 아파치 HTTPD 랑 연동하지 않구요..
디렉토리 구조 중에 보면..
[web_root]/admin/index.htm
이 있고, 이리로 접속하면 매타태그를 사용하여 /admin/index.do 로 넘어가도록 했습니다.
*.do 로 스프링 디스펫치 서블렛 매핑이 되어 있구요..
목적은 http://xxx.xxx.xxx/admin 으로 접속할 경우 http://xxx.xxx.xxx/admin/index.do
로 가게끔 하려고 함이죠.
근데 이게 최근에 운영에 올렸더니 /admin/index.do 로 들어가면 404 가뜹니다.
이게 개발시엔 별문제가 없었거든요. 근데 전에도 운영에 올렸더니 지금과 동일한 문제가 발생해 HTTPD 를 붙여 rewrite
로 해결했었던게 기억이 나는 겁니다.
그래서 이런저런 테스트를 다시 해보니
이클립스에서 톰캣 잡아서 올리면 /admin/index.do 가 잡히고
톰캣을 직접 띄우면 /admin/index.do 가 404가 떨어지는 겁니다.(/admin 디렉토리를 지우면 잘 됩니다.)
그래서 톰캣 설정 파일을 서로 비교해 보왔는데 원인이 될만한 차이점을 발견하지 못하였습니다.
대체 왜 이럴까요.
2줄 요약 :
이클립스에서 톰캣 올리면 /admin/index.htm -> /admin/index.do 로 잘 넘어가는데
톰캣에 직접 올리면 /admin/index.htm -> /admin/index.do 넘어가고 404 떨어짐
방법 없음 아파치를 묶어야 하는데 고객쪽에서 관리 요소가 늘어나는걸 원치 않는 상황입니다. 즉 톰캣 단독으로 가길 원하는 거
죠. 설득하면 하겠는데, 그렇게 하건 말건 일단 저는 이 현상의 원인이 궁금하네요.
다른 디렉토리명으로 해도 마찬가지 입니다. /uhahaha 라는 디렉토리가 생성하고
/uhahaha/index.do 에 매핑되는 컨틀로러 매소드를 하나 등록 시켜 놓은 다음, 톰캣 실행 시키고 브라우져로 호출해보
면
톰캣 단독으로 띄울 경우 -> 404 -> /uhahaha/ 디렉토리 삭제하면 -> 정상적으로 요청이 수행됨
이클립스에 연동된 톰캣으로 띄울 경우 -> 정상적으로 요청이 수행됨 (/uhahaha/ 디렉토리가 있건 없건 간에..)
분명 web.xml 에는 *.do 로 서블릿 이 매핑되어 있습니다. 않되어 있다면 요청에 대한 정상적인 처리자체를 확인하지 못했
을 테니까요..
web.xml 의 서블릿 매핑부분
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/config/dispatcher-servlet.xml
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
영문을 모르겠네요.