기술지원 문의

수정되지 않은 jsp파일 컴파일
노우건 / 2012-09-14 17:47

안녕하세요?

기본적으로 서블릿엔진은 jsp파일이 수정되면 처음 로딩시 java파일로 만들고

이를 컴파일해서 class 파일을 만드는것으로 알고 있는데요.

수정한지 2년도 넘은 jsp파일이 컴파일 되어 work 디렉토리에 java파일과

class파일과 smap파일이 생성이 되는 경우가 있는데요.

이런 경우는 어떤경우에 발생하나요?

또한 설정파일에 임의의 페이지 호출시 jsp수정여부와 관계없이

컴파일을 해주는 설정이 있는것인지

참으로 알수가 없고 답답해서 여기의 문의를 올립니다.

사용중인 resin 버전은 3.0.23 입니다.

 

WEB-INF/work-3.0.23-1/_jsp/ 디렉토리를 보면 아래와같이 9월 14일자로 생성된것을 볼수가 있습니다.

9월 14 14:54 _mailbox_0modify__jsp.java.smap
9월 14 14:54 _mailbox_0modify__jsp.java
9월 14 14:54 _mailbox_0modify__jsp.class

 

그런데 해당 jsp 파일을 보면 아래와 같이 2005년 9월 29일에 최종 수정된 날짜가 확인됩니다.

9월 29  2005 mailbox_modify.jsp

 

수정된지 5년도 넘었는데 왜 오늘날짜로 생성된 .java, .class가 있을수있는지

실제로 시스템에서 컴파일을 했습니다.

프로세스 조회해보면 javac ..... 컴파일된것도 확인 하였습니다.

 

이렇게 오늘날짜로 컴파일된 jsp파일이 여러개가 존재 합니다.

매일 이렇게 모든 jsp파일이 컴파일되는것이 아니고 어떤것은 되고 어떤것은 그대로 있고 일관성이 없게 여러개의 수정한지 오래된 jsp파일들이 컴파일 되고 있습니다.

 

왜 이러는 것인지 알수있을까요?

답변 부탁 드리겠습니다.

 

 

 

감사합니다.

[답변]수정되지 않은 jsp파일 컴파일
관리자 / 2012-09-17 11:39

안녕하세요. 기술지원팀 입니다.

 

보여주신 JSP 파일의 컴파일 시간이

 

레진 Start 시간과 동일하다는 가정하에 말씀드리겠습니다.

 

Resin은 JSP Precompiler 기능을 사용하게 되면,

 

Resin 서버 시작시 JSP Page를 새롭게 Compile을 하게 됩니다.

 

하지만 이때, 특정한 패턴(?)에 의해 Precompile 에서 제외되는 JSP가

 

존재하는걸로 확인 됩니다.

 

이로 인하여, JSP Page간 컴파일 시간이 다른걸로 사료 되며,

 

해당 패턴에 대해서는 아직 확인 되지 않은 관계로 정확하게

 

말씀드리지 못하는점 양해 부탁드립니다. ^^;

 

JSP Precompiler 설정은 다음과 같습니다.

 

    <listener>
         <listener-class>com.caucho.jsp.JspPrecompileListener</listener-class>
           <init>
             <extension>jsp</extension>
             <extension>jspx</extension>
          </init>
    </listener> 

 

참고 하시기 바라며,

 

JSP Precompiler 기능을 사용하지 않으면,

 

최초 JSP Page 호출시 컴파일 된 후 변경 사항이 없으면,
 
서버를 재시작 하더라도 별도의 컴파일은 진행하지 않습니다.

 

문의주신 일관성 없는 컴파일 날짜를 피하고 싶으시면 , 해당 PreCompiler 기능을

 

비활성화 해보시기 바랍니다.

 

감사합니다.