티스토리 뷰
참조 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
- 젠킨스
- Nexus
- Config History
- PostgreSQL
- nginx
- Docker
- vagrant
- openssl
- rsync
- Playbook
- Thread Dump
- Linux
- JVM
- groovy
- 리눅스
- Password manager
- 엔서블
- DevOps
- rundeck
- 엔시블
- URL Encoding
- Shell Script
- Jenkins
- Ansible
- 플레이북
- 파이프라인
- 데브옵스
- iTerm2
- 쓰레드덤프
- ssl
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |