Translate

[Linux/Unix][JSP] touch 를 해야 적용되는 원인과 해결방법이 뭘까??



초급개발자 시절이었나..

JSP를 적용했는데 정상적으로 적용이 되지 않아서 인터넷에서 찾아보니 인터넷에서 touch 명령어를 입력하면 정상적으로 반영이 될 거라고 들었다.


정말로

$ touch {_JSP_파일명_}

입력을 하니 정상적으로 반영이 되었다.


PS.
원래 touch 명령어는 날짜와 시간 명령어를 변경하는 명령어 이다.

1. touch 명령어를 입력함으로써 서버에 반영에 될 수 있는 이유는 touch 명령어를 입력하면 해당 파일이 현재 시간으로 변경이 되기 때문이다.
2. 해당 파일이 현재 시간으로 변경이 되면 WAS에서 해당 JSP파일의 시간이 변경된 것을 보고 새로운 파일로 인식하고 java 로 변환 후 다시 class로 컴파일하여 적용을 한다.










최근에 확실치는 않지만 touch 명령어를 사용해야 하는 과정에서 다음과 같은 공통점을 발견했다.


1. FTP 프로토콜을 사용하여 파일을 업로드 시 부터 잘 반영되지 않았다.
    (SCP 를 사용하여 파일을 업로드 시 문제가 없었으며 다시 SCP사용시 문제가 없음을 확인했다.)

2. FTP로 파일을 올린 후 일정 시간이 지난 후 새로고침을 하면 정상적으로 반영이 되지만 올리자마자 바로 해당 페이지를 새로고침을 하는 경우에는 확률상 반영이 잘 되지 않았다.


일단 1번(FTP) 방법으로 올린 것이 가장 의심이 되었으며..
심한경우에는 java가 컴파일된 class 파일도 정상적으로 업로드 되었지만 서버에 반영이 되지 않았으며 SCP 로 파일을 업로드 후에는 해당 증상이 발견되지 않았다.





왜인지는 아직까지도 잘 모르겠다.

해당 파일이 정상적으로 올라가 있는 것도 확인했으며
(jsp 뿐만이 아니라 vi 로 class 파일을 열었을 때에도 내용이 얼추 보이니 파일이 바뀌었는지 아닌지 얼추 알 수 있다.)
파일은 정상적으로 올라가 있지만 해당 파일이나 해당 파일을 사용하는 파일을 touch 명령어 입력 시 정상적으로 적용되는 것을 확인 할 수 있었다.




결론


다만 경험상 SSH 프로토콜을 사용하여 업로드 하는 방식인 SCP 에서 FTP 방식으로 변경 시 touch 명령어를 사용해야만 적용되는 경우가 갑자기 생겼으며 FTP 방식으로 업로드 하다가 SCP 방식으로 파일을 업로드 후에는 touch 명령어를 입력하지 않아도 모든 소스가 정상적으로 반영이 되었다.



댓글