티스토리 뷰

Develop/Language

endorsed의 의미

빼인트 2010. 1. 31. 16:55

참조 URL : http://aploit.egloos.com/4806304

 

목적

- JDK자체에 포함된 것이 아닌 설치한 라이브러리의 것을 로딩하려 할 때 사용

 

기본정리

- JAXP 라이브러리 : jaxp-api.jar, jaxp-ri.jar

- 각 JDK 버전마다 JAXP 라이브러리가 포함되어 있음. 그러나 각각 JAXP버전은 상이함.

JDK 1.4 : JAXP 1.2

JDK 5 : JAXP 1.3

JDK 6 : JAXP 1.4

 

* JDK버전에 -0.2를 하면 된다고 생각하면 될듯.

 

문제가 발생하는 경우

JDK 1.4로 개발하면서 JAXP 1.3을 쓰려고 하면 동일한 패키지명을 가지는 클래스가 2개가 존재하게 된다.

즉, org.w3c.dom.Document 의 경우 JAXP1.2는 rt.jar에 존재하고 JAXP1.3은 jaxp-api.jar에 존재함

jaxp-api.jar에 있는 클래스를 로딩하려 하나 그렇게 동작하지 않음.

설치한 라이브러리들의 간의 로딩 순서는 classpath로 조절가능하지만 rt.jar는 설정 순서로 조절할 수 없음.

 

사용법

JVM 옵션에 "java.endorsed.dirs" 시스템 파라미터 설정

 

ex) /home/tmax/endorsed 라는 디렉토리에 jaxp-api.jar 넣었을 경우

java -Djava.endorsed.dirs=/home/tmax/endorsed

 

기타

- ClassLoading매커니즘에서 "java."로 시작하는 패키지의 클래스는 endorsed가 적용되지 않음.

- JAXP1.4가 설치되어 있다면 apache xalan의 다음과 같은 라이브러리들을 따로 설치할 필요 없다. JAXP안에 포함되어 있기 때문이다. 설치할 필요가 없는 것 보다는 쫑나는 상황을 피하기 위하여 설치해서는 안됨.

serializer.jar

xalan.jar

xercesImpl.jar

xml-apis.jar

xsltc.jar

- jaxp는 sun의 glassfish 프로젝트에서 관리하고 있음.

 

JEUS관련

1) JAXP라이브러리 위치

- JEUS5 : lib/system 안에 위치

- JEUS6 : lib/endorsed 안에 위치 (JEUS6으로 가면서 endorsed디렉토리 별개 분리함)

 

2) 버전별 동작 방식

ㄱ) JEUS 6

- 아래와 같이 JEUS6의 jeus 스크립트에 기본적으로 ${JEUS_HOME}/lib/endorsed 로 설정되어

JEUS에 포함된 JAXP 라이브러리를 사용하게 됨.

- jeus 스크립트 예)

========================================================

...중략...

# execute jeus with echo

set -x

"${JAVA_HOME}/bin/java" $VM_OPTION $SESSION_MEM \

-Xbootclasspath/p:"${JEUS_HOME}/lib/system/extension.jar" \

-classpath "${JEUS_HOME}/lib/system/bootstrap.jar" \

-Dsun.rmi.dgc.client.gcInterval=3600000 \

-Dsun.rmi.dgc.server.gcInterval=3600000 \

-Djava.library.path="${JEUS_LIBPATH}" \

-Djava.endorsed.dirs="${JEUS_HOME}/lib/endorsed" \

...중략...

ㄴ) JEUS 5

- JEUS 6과는 달리 jeus스크립트에 존재하지 않음

- 따라서 JDK에 포함되어 있다면 JDK에 존재하는 JAXP 라이브러리가 로딩되고

- JDK에 포함되어 있지 않으면 $JEUS_HOME/lib/system 에 있는 JAXP 라이브러리가 로딩된다.

- 따라서 특정버전의 JAXP를 사용하려 한다면 JEUS6과 같이

-Djava.endorsed.dirs="${JEUS_HOME}/lib/endorsed" 설정을 해야 함.

'Develop > Language' 카테고리의 다른 글

자바스크립트(Java Script)는 자바(Java)가 아니다  (0) 2010.04.30
HTTP Method  (0) 2010.03.06
[web.xml] Sample  (0) 2010.02.02
[web.xml] PackageSeparator 구분자 설정  (0) 2010.02.02
System.gc()  (0) 2010.02.02
HTTP 상태코드  (0) 2010.01.31
[Session] P3P (Platform for Privacy Preferences)  (0) 2009.11.26
[Session] 브라우저에서 Cookie정보보기  (0) 2009.11.26
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함