티스토리 뷰
weblogic.xml 설정방법
weblogic.xml은 WEB-INF\ 에서 web.xml 과 함께 있다.
web application 구현시 WAS 로 weblogic 을 많이 선택하게 되는데 weblogic 을
띄울떄 weblogic.xml 에 설정값을 작성해 둔다. 그 설정값에 대한 설명을 한 내용이다.
아래 설정 스크립트는 weblogic 9.x 이상에서 적용된다.
서블릿을 수정하고 재컴파일 한 경우 브라우저에서 요청을 하데 되면 컨테이너가
<servlet-reload-check-secs> 에서 설정한 값을 읽어들여 서블릿 최종버전을
로드하게 된다. 컨테이너는 WEB-INF/classes 에 있는 클래스 파일을 읽어들일 것이다.
<servlet-reload-check-secs> 설정된 값은 최신버전으로 체크해서 재로딩하는 시간을
나타낸다. 개발 버전은 보통 1로 설정한다. 1초마다 로드한다는 말이다.
반대로 운영에서 개별 클래스를 변경하게 하지 않을려면 -1 을 설정하면 된다.
<weblogic-web-app>
<context-root>/ep5cm</context-root>
<container-descriptor>
<servlet-reload-check-secs>-1</servlet-reload-check-secs>
</container-descriptor>
</weblogic-web-app>
pageCheckSeconds 값은 JSP 에 대한 요청이 올때마다 컨테이너가 최신버전인지 체크하게
하는시간이다. 예제와 같이 10초로 설정이 되어있다면 최종 stale checking 시간과 현재
시간과의 간격을 체크하여 10초보다 더 크다면 페이지가 재 컴파일 되게 된다.
보통 개발시 1로 설정하고 진행을 하며 반대로 운영모드 일때는 -1 을 설정하여
재컴파일이
안되도록 설정한다.
<weblogic-web-app>
<jsp-descriptor>
<jsp-param>
<param-name>pageCheckSeconds</param-name>
<param-value>10</param-value>
</jsp-param>
</jsp-descriptor>
</weblogic-web-app>
아래 내용은 <timeout-secs> 웹세션 타임아웃을 설정한 값이다. 단위는 초이며 3600
이니까 60분이 되는 것이다. <invalidation-interval-secs> 의 설정된값은 session 에
bound 된 것들을 unbound 시키는 시간을 나타낸다. 이것은 내부적으로 invalidate() 를
호출한다.
<id-length> 는 세션 ID 길이를 설정하는 값이다. 이값을 설정하는 이유는 세션아이디를
알아내기 위해 무차별적인 공격을 막기 위한 길이이며 128비트 이상이어야 한다.
128비트 보다 짮은 세션아이디를 설정하게 되면 불순한 의도를 가진 응용프로그램에
취약점을 노출하게 된다.
<cookie-name> 는 웹로직에서 cookie 에 대한 셋팅을 한것인데 세션아이디는 여기서
설정한 cookie 와 함께 관리하게 된다.
그래서 브라우저가 쿠키를 지원할경우 JSESSIONID 라는 쿠키값을 사용하여 세션아이디에
전송하게 된다. 쿠키를 지원하지 않는 브라우저에서는 JSESSIONID 값을 URL Parameter로
서버에 세션아이디를 전달하게 된다.
<persistent-store-type> 은 두개의 서버에서 클러스터링 환경을 지원해 주고자 할 때
설정하는 곳이다.
<weblogic-web-app>
<session-descriptor>
<timeout-secs>3600</timeout-secs>
<invalidation-interval-secs>20</invalidation-interval-secs>
<debug-enabled>false</debug-enabled>
<id-length>52</id-length>
<cookie-name>JSESSIONID</cookie-name>
<persistent-store-type>replicated_if_clustered</persistent-store-type>
</session-descriptor>
</weblogic-web-app>
다음은 인코더를 설정하는 부분으로 resource-path 의 / * 의미는 URL 하위에 있는
모든 페이지들에 적용하라는 표시가 된다. 적용타입은 아래에 java-charset-name 값으로
하게 되는데 예제에서는 UTF-8 로 적용하게 되어있다.
<weblogic-web-app>
<resource-path>/*</resource-path>
<java-charset-name>UTF-8</java-charset-name>
</weblogic-web-app>
흔히 두가지 이상의 언어도 사이트를 구분해서 언어를 적용하고 싶을때가 있다.
예를 들어 일본어 사이트와 한글사이트를 구분해서 표현하고자 할 때 URL 주소아래에
/kr, /jp 를 붙여 구분한다. 페이지의 접근을 구분해서 설정하고 weblogic 은 아래와 같이
resource-path 에 구분 URL 을 넣고 java-charset-name 에 원하는 인코더를 넣어
설정한다.
<weblogic-web-app>
<resource-path>/kr/*</resource-path>
<java-charset-name>euc-kr</java-charset-name>
<resource-path>/jp/*</resource-path>
<java-charset-name>SJIS</java-charset-name>
</weblogic-web-app>
JSP 파일을 컴파일해서 명시적인 주소로 집어넣기 위해 설정하는 곳이다. JSP 는
컴파일 되게 되면 servlet java 형태로 만들어져 설정한 주소로 들어간다.
이것을 설정하지 않으면 eclipse 에서 임시폴더인 tmp 로 만들어 집어넣고
속도 또한 떨어지게 된다.
<weblogic-web-app>
<keepgenerated>true</keepgenerated>
<page-check-seconds>1</page-check-seconds>
<verbose>true</verbose>
<working-dir>D:\workDir\admin</working-dir>
<print-nulls>false</print-nulls>
<debug>true</debug>
</weblogic-web-app>
<?xml version='1.0' encoding='UTF-8'?>
<weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.0/weblogic-web-app.xsd">
<session-descriptor>
<timeout-secs>3600</timeout-secs>
<invalidation-interval-secs>60</invalidation-interval-secs>
<persistent-store-type>memory</persistent-store-type>
<url-rewriting-enabled>true</url-rewriting-enabled>
</session-descriptor>
<jsp-descriptor>
<page-check-seconds>5</page-check-seconds>
<precompile>false</precompile>
<keepgenerated>false</keepgenerated>
<encoding>utf-8</encoding>
</jsp-descriptor>
<charset-params>
<input-charset>
<resource-path>/*</resource-path>
<java-charset-name>utf-8</java-charset-name>
</input-charset>
</charset-params>
<!-- 입력 -->
<container-descriptor>
<show-archived-real-path-enabled>true</show-archived-real-path-enabled>
</container-descriptor>
<!-- 이 부분에 설정하고자 하는 Context Root 입력 -->
<context-root>/</context-root>
</weblogic-web-app>