Links User Guide 참고 아파치 톰캣 개발 | Jasper 2 JSP Engine How To소개 |
톰캣 7.0은 Jasper 2 JSP 엔진을
JavaServer Pages 2.2
명세서를 구현하기 위해 사용합니다.
Jasper 2는 기존 Jasper의 성능을 향상시키기 위해 다시 디자인 되었습니다. 일반적인 코드 향상 이외에도 다음과 같은
변경이 있었습니다:
- JSP 커스텀 태크 풀링 - JSP 커스텀 태크를 위해 사용된 자바 오브젝트가
이제 사용될 수 있습니다. 이는 커스텀 태크를 사용하는 JSP 페이지의 성능을 월등히 향상시킵니다.
- 백그라운드 JSP 컴파일레이션 - 만약 여러분이 이미 컴파일된 JSP 페이지를 변경하면 Jasper 2는 그 페이지를
백그라운드로 재컴파일 할 수 있습니다. 기존에 컴파일된 JSP 페이지는 여전히 서버 요구에 따라 이용 가능합니다. 새로운 페이지가
성공적으로 컴파일되면 이는 예전 페이지를 대체하게 됩니다. 이는 여러분의 JSP 페이지가 생산 서버에 반영되기 쉽게 도와줍니다.
- 포함된 페이지가 변경될 때 JSP 재컴파일 하기 - Jasper 2는 컴파일 타임에 JSP가 변경된 것을 감지할 수 있으며
부모 JSP를 재컴파일 합니다.
- JDT는 JSP 파일을 컴파일 하는데 사용됩니다 - 이클립스 JDT 자바 컴파일러는 이제 JSP 소스 컴파일을 수행하는데
사용됩니다. 이 컴파일러는 소스 의존도를 컨테이너 클래스로더로 부터 로드합니다. Ant와 javac은 여전히 사용 가능합니다.
Jasper는 서블렛 클래스를 사용하여 구현됩니다
org.apache.jasper.servlet.JspServlet .
|
설정 |
기본적으로 Jasper는 웹 애플리케이션 개발을 위해 설정됩니다.
생산 톰캣 서버를 사용하기 위한 Jasper 설정은 다음에서 정보를 얻으실 수 있습니다
생산 설정
Jasper를 구현하는 서블렛은 여러분의 글로벌 $CATALINA_BASE/conf/web.xml 에 있는 초기 파라미터를 사용하여
설정됩니다.
- checkInterval - 만약 development가 false 이고 checkInterval이 0보다 크면 백그라운드 컴파일이
활성화 됩니다. checkInterval은 JSP 페이지(그리고 그것에 의존해 있는 파일들)가 재컴파일을 해야 하는지 check 하는
초단위 시간을 뜻합니다. 기본적으로는
0 초 입니다.
- classdebuginfo - 클래스 파일이 디버깅 정보와 함께 컴파일 되어야 하는가?
true or false , 기본적으로는 true 입니다.
- classpath - 생성된 서블렛을 컴파일하는데 사용되는 클래스 경로를 뜻합니다. 이 파라미터는 오직
ServletContext attribute org.apache.jasper.Constants.SERVLET_CLASSPATH이 세팅되어 있지 않을 때만 효력이 있습니다. 이
속성은 Jasper가 톰캣 안에서 사용될때는 언제나 세팅되어 집니다. 기본적으로 classpath는 현재 웹 애플리케이션에 따라 다이나믹하게
생성됩니다.
- compiler - Ant가 어떤 컴파일러는 JSP 페이지를 컴파일 하기 위해 사용해야 하는가를 결정합니다. 더 많은
정보를 위해서는 Ant 문서를 참고하세요. 만약 값이 세팅되어 있지 않으면 기본적으로 Eclipse JDT Java 컴파일러가 Ant 대신에
사용됩니다. 기본적은 값은 없습니다.
- compilerSourceVM - 어떤 JDK 버젼이 소스 파일과 호환이 되는가? (기본 값:
1.6 )
- compilerTargetVM - 어떤 JDK 버젼이 생성된 파일과 호환이 되는가?
(기본 값:
1.6 )
- development - Jasper가 개발 모드에서 사용되는가? 만약 true이면 어떤 JSP가 수정을 위해 체크되었는지를
확인하는 빈도가 modificationTestInterval 에서 명시될 것 입니다.
true 또는 false ,
기본값은 true 입니다.
- displaySourceFragment - 소스 조각이 예외 메시지에 포함되어야 하는가?
true or false ,
기본값은 true 입니다.
- dumpSmap - JSR45 디버깅을 위한 SMAP 정보가 파일에 덤프되어야 하는가?
true or false , 기본값은
false 입니다. 만약 suppressSmap가 true 이면 false 입니다.
- enablePooling - 태그 핸들러 풀링이 활성화 되었는지를 결정합니다. 이는 컴파일 옵션이며 이미 컴파일된
JSP의 행동을 바꾸지 않습니다.
true or false ,
기본값은 true 입니다.
- engineOptionsClass - Jasper를 설정하는 클래스의 옵션을 명시합니다. 만약 없다면 기본
EmbeddedServletOptions가 사용됩니다.
- errorOnUseBeanInvalidClassAttribute - useBean 액션의 클래스 속성이 유효한 클래스가 아닐때
에러를 이슈해야 하는가?
true 또는 false , 기본값은
true 입니다.
- fork - Ant fork JSP 페이지가 톰캣으로부터 개별적인 JVM에서 실행되는가?
true 또는 false , 기본값은 true 입니다.
- genStringAsCharArray - 몇몇 경우에 텍스트 스트링이 char 배열로 생성되어야 하는가?
기본값은
false 입니다.
- ieClassId - <jsp:plugin> 태그들을 쓸 때 인터넷 익스플로어로 보내지는 class-id 값.
기본값은
clsid:8AD9C840-044E-11D1-B3E9-00805F499D93 입니다.
- javaEncoding - 자바 소스 파일을 생성할 때 사용되는 자바 파일 인코딩.
기본값은
UTF8 입니다.
- keepgenerated - 각 페이지에 대해 생성되는 자바 소스 코드를 지니고 있어야 하는가 아니면 지워야 하는가?
, 기본값은
true 입니다.
- mappedfile - 디버깅이 쉽게 하기 위해서 각 인풋 라인마다 정적인 컨탠츠와 함께 statement를 출력해야
하는가?
true or false , 기본값은 true 입니다.
- maxLoadedJsps - 웹 애플리케이션을 위해 로드되는 JSP의 최대 갯수. 만약 이보다 많은 JSP가 로드되면
이 한계점을 지키기 위해서 가장 오래전에 사용된 JSP가 언로드 됩니다. 0 또는 그보다 작은 값은 한계점이 없다는 것을
뜻합니다.기본값은
-1 입니다.
- jspIdleTimeout - JSP가 언로드 되기 전에 비활성화 되는 초단위 시간. 0 또는 그보다 작은 값은
언로드 되지 않음을 뜻합니다. 기본값은
-1 입니다.
- modificationTestInterval - JSP가 수정되었는지 체크를 한 마지막 시간으로부터 특정 시간 간격동안
(초단위) JSP (그리고 그에 의존한 파일들)가 수정되었는지 체크하지 않도록 합니다. 0 값을 쓰면 매번 접근 시 마다 JSP가
체크됩니다. 개발 모드에서만 사용 가능합니다.
기본값은
4 초 입니다.
- recompileOnFail - 만약 JSP 컴파일이 실패한다면 modificationTestInterva가 무시되고 다음 접근이
재컴파일을 시도하는가? 개발 모드에서만 사용되며 기본적으로는 비활성화 되어 있습니다. 이는 과도한 리소스 사용을 막기 위함
입니다.
- scratchdir - JSP 페이지를 컴파일 할 때 어떤 스크래치 디렉토리를 사용해야 하는가? 기본 값은
현재 웹애플리케이션 작업 디렉토리 입니다.
- suppressSmap - JSR45를 위해 SMAP 정보를 생성하는 것이 억압되어 있는가?
Should the generation of SMAP info for JSR45
true 또는 false , 기본값은 false 입니다.
- trimSpaces - 액션간에 탬플레이트 텍스트를 빈공간으로 해야 하는가 아니면 명령이 다듬어 져야 하는가?,
기본값은
false 입니다. 재해석 필요!!!
- xpoweredBy - X-Powered-By 응답 해더가 생성된 서블렛에 의해 추가되어야 하는가를 결정합니다.
true or false ,
기본값은 false 입니다.
Eclipse JDT에 포함된 자바 컴파일러가 기본 컴파일러로 사용됩니다. 이는 톰캣 클래스 로더로 부터 모든 디펜던시를
로드하는 향상된 컴파일러 이며, 수십개의 JAR를 사용하여 대용량의 설치를 컴파일할 때 많은 도움을 줍니다. 빠른 서버에서
이는 많은 JSP 페이지에서도 서브-세컨드 재컴파일 사이클을 허용합니다.
예전 톰캣 릴리즈에서도 사용된 아파치 안트가 새로운 컴파일로에서도 대신 사용될 수 있습니다. 이는 단순히
lib/ecj-*.jar 파일을 삭제하고,최신 안트 배포판의 lib 안에 있는 ant.jar 과 ant-launcher.jar 파일로
대체하면 됩니다.
|
알려진 이슈들 |
bug 39089 에서도 기술되어 있듯이, 알려진 JVM 이슈는
bug 6294277,
java.lang.InternalError: name is too long to represent 예외를 많은양의 JSP를 컴파일 할 때
발생시킬 수 있습니다. 만약 이러한 상황이 발생할 시에는 이들 중 하나를 사용하면 해결할 수 있습니다:
- JSP 사이즈를 줄입니다JSP
- SMAP 생성을 비활성화 하고 JSR-045
suppressSmap 을 true 로 변경합니다.
|
Production Configuration |
주요 JSP 최적화 방법은 JSP를 미리 컴파일 하는 것입니다. 그러나 이 방법은 Jasper 서블렛 설정이 중요할 때는
가능하지 않거나 실용적이지 않습니다 (예를 들어 jsp-property-group feature를 사용할 때).
When using Jasper 2 in a production Tomcat server you should consider making
the following changes from the default configuration.
- development - To disable on access checks for JSP
pages compilation set this to
false .
- genStringAsCharArray - To generate slightly more efficient
char arrays, set this to
true .
- modificationTestInterval - If development has to be set to
true for any reason (such as dynamic generation of JSPs), setting
this to a high value will improve performance a lot.
- trimSpaces - To remove useless bytes from the response,
set this to
true .
|
|