톰캣(Tomcat) 서버의 캐시(Cache) 파일 삭제하기 // 서블릿(Servlet) 재생성, 새로고침(리프레쉬Refresh), JSP, 자바(Java) 클래스(Class) 파일
카페24(cafe24.com) 등 호스팅 업체의 웹 서버에 올려진 JSP 파일 또는 자바(Java)의 클래스(Class) 파일을 분명히 수정-또는 수정된 파일로 덮어쓰기- 했음에도 불구하고
크롬(Chrome) 등의 웹 브라우저에서 확인되는 소스 코드나 사이트의 작동 상황에는 수정한 내용이 반영이 안 되는 경우가 있습니다.
FTP 등으로 서버의 파일을 열어보면 수정되어 있는데, 브라우저에서 열리는 파일은 수정이 안 되어 있는 것이죠.
오! 마이! 갓! -o-;
FTP에서나 Telnet(SSH)에서 확인되는 서버(Server) 측의 파일은 수정이 되어 있지만, 클라이언트(Client)의 브라우저에서 열리는 파일은 수정이 안 되어 있다면 아마도 톰캣의 문제일 겁니다.
JSP의 작동 원리 상, JSP로 작성된 파일은 소스 파일로 변환(*.java) 되고 다시 컴파일(*.class) 되는 과정을 거쳐 서블릿 컨테이너(Servlet Container) 내에서 서비스가 되는 것인데
JSP 파일의 내용이 바뀌었음에도 불구하고 톰캣이 이를 인식하지 못해서인지, 서블릿 파일을 다시 생성하지 않아서 이러한 문제가 생기는 것입니다.
결과적으로 브라우저로 접근하는 클라이언트에서는 기존의 서블릿 파일만 보이고 (초보) 개발자는 멘붕에 빠지게 됩니다. ㅠ_ㅠ
서버에 올려진 JSP 파일만 다시 서블릿 파일로 컴파일 하도록 하면 되는데, 저도 그 방법은 정확하게 모르겠구요
약간 돌아서 가는 방법이 있습니다. ^^; '약간'입니다. ㅋ
서버에 접속하여, 앞서 설명한 서블릿 관련 파일 2개를 삭제하는 것입니다. (JSP 파일 1개당 서블릿 파일 2개가 생성됩니다.)
* 삭제된 서블릿 파일은 톰캣이 다시 생성(컴파일)하니 겁먹지 말고 삭제하시면 됩니다. ㅎㅎ
카페24(cafe24.com)의 '64bit JSP 광호스팅' 서비스의 경우를 예로 들어서 설명하도록 하겠습니다.
먼저, 톰캣의 서블릿 파일 경로를 찾아가야 하는데요, www 폴더에서 상위로 나가면 tomcat 폴더가 보이구요, tomcat 폴더를 다시 파고 들어가면,
tomcat
|-- bin
|-- conf
|-- lib
|-- logs
|-- temp
|-- webapps
`-- work
`-- [계정ID명]
`-- [계정ID명).cafe24.com]
`-- _ (밑줄)
`-- org
`-- apache
`-- jsp
|-- [파일이름]_jsp.class <--- 요놈
`-- [파일이름]_jsp.java <--- 이놈
tomcat/work/(계정ID명)/(계정ID명).cafe24.com/_/org/apache/jsp/... 과 같은 형태를 하고 있습니다.
저 뒤쪽으로는 유저의 폴더 상황에 따라서 각각의 폴더가 생성되어 있는데요, 원본 파일(*.jsp)이 위치한 폴더에 대응하는 폴더로 찾아가서 원본 파일이름에 해당하는 java 파일과 class 파일을 삭제해주시면 됩니다.
예를 들어,
www/main/page1.jsp 가 수정되었으나 서블릿은 다시 생성되지 않고 있다면
tomcat/work/(계정ID명)/(계정ID명).cafe24.com/_/org/apache/jsp/main/page1_jsp.class 파일과 page1_jsp.java 파일을 삭제하고
브라우저로 http://(계정ID명).cafe24.com/main/page1.jsp 로 접근해서 확인하면 됩니다.
*** 서블릿 파일은 톰캣이 자동으로 생성한 거라서 삭제하더라도 클라이언트가 접속 요청을 하면 다시 생성됩니다.
*** 카페24의 'Tomcat JSP 광호스팅' 서비스의 경우에는 www 폴더가 없고 tomcat 폴더만 존재합니다만 세부 경로는 위와 같습니다.
크롬(Chrome) 등의 웹 브라우저에서 확인되는 소스 코드나 사이트의 작동 상황에는 수정한 내용이 반영이 안 되는 경우가 있습니다.
FTP 등으로 서버의 파일을 열어보면 수정되어 있는데, 브라우저에서 열리는 파일은 수정이 안 되어 있는 것이죠.
오! 마이! 갓! -o-;
1. 톰캣(Tomcat)의 JSP 캐시(Cache) 파일!?
JSP의 작동 원리 상, JSP로 작성된 파일은 소스 파일로 변환(*.java) 되고 다시 컴파일(*.class) 되는 과정을 거쳐 서블릿 컨테이너(Servlet Container) 내에서 서비스가 되는 것인데
JSP 파일의 내용이 바뀌었음에도 불구하고 톰캣이 이를 인식하지 못해서인지, 서블릿 파일을 다시 생성하지 않아서 이러한 문제가 생기는 것입니다.
결과적으로 브라우저로 접근하는 클라이언트에서는 기존의 서블릿 파일만 보이고 (초보) 개발자는 멘붕에 빠지게 됩니다. ㅠ_ㅠ
2. 해결 방법
약간 돌아서 가는 방법이 있습니다. ^^; '약간'입니다. ㅋ
서버에 접속하여, 앞서 설명한 서블릿 관련 파일 2개를 삭제하는 것입니다. (JSP 파일 1개당 서블릿 파일 2개가 생성됩니다.)
* 삭제된 서블릿 파일은 톰캣이 다시 생성(컴파일)하니 겁먹지 말고 삭제하시면 됩니다. ㅎㅎ
3. 톰캣(Tomcat) 서버의 서블릿(Servlet) 파일 경로 // 카페24 포함
카페24(cafe24.com)의 '64bit JSP 광호스팅' 서비스의 경우를 예로 들어서 설명하도록 하겠습니다.
먼저, 톰캣의 서블릿 파일 경로를 찾아가야 하는데요, www 폴더에서 상위로 나가면 tomcat 폴더가 보이구요, tomcat 폴더를 다시 파고 들어가면,
tomcat
|-- bin
|-- conf
|-- lib
|-- logs
|-- temp
|-- webapps
`-- work
`-- [계정ID명]
`-- [계정ID명).cafe24.com]
`-- _ (밑줄)
`-- org
`-- apache
`-- jsp
|-- [파일이름]_jsp.class <--- 요놈
`-- [파일이름]_jsp.java <--- 이놈
tomcat/work/(계정ID명)/(계정ID명).cafe24.com/_/org/apache/jsp/... 과 같은 형태를 하고 있습니다.
저 뒤쪽으로는 유저의 폴더 상황에 따라서 각각의 폴더가 생성되어 있는데요, 원본 파일(*.jsp)이 위치한 폴더에 대응하는 폴더로 찾아가서 원본 파일이름에 해당하는 java 파일과 class 파일을 삭제해주시면 됩니다.
예를 들어,
www/main/page1.jsp 가 수정되었으나 서블릿은 다시 생성되지 않고 있다면
tomcat/work/(계정ID명)/(계정ID명).cafe24.com/_/org/apache/jsp/main/page1_jsp.class 파일과 page1_jsp.java 파일을 삭제하고
브라우저로 http://(계정ID명).cafe24.com/main/page1.jsp 로 접근해서 확인하면 됩니다.
*** 서블릿 파일은 톰캣이 자동으로 생성한 거라서 삭제하더라도 클라이언트가 접속 요청을 하면 다시 생성됩니다.
*** 카페24의 'Tomcat JSP 광호스팅' 서비스의 경우에는 www 폴더가 없고 tomcat 폴더만 존재합니다만 세부 경로는 위와 같습니다.
'이전것 > WAS' 카테고리의 다른 글
Jrebel만 설치하면 WAS Release 안됨 WAS 배포 WAR Release 배포 (0) | 2018.01.16 |
---|---|
Eclipse 작업 폴더 workspace 에 RemoteSystemsTempFiles 폴더 생성 않게하기 (0) | 2017.12.19 |
Eclipse Tomcat 구동시 Setting property 'source' to 'org.eclipse.jst.jee.server (0) | 2017.12.01 |
이클립스 자바 프로젝트 설정하기 (0) | 2017.11.15 |
Tomcat Tomee+ java 관련 옵션 정리 (0) | 2017.10.24 |