|
# 목적 -. 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" 설정을 해야 함. |
java.endorsed.dirs 옵션에 대하여
제제끼나·2014년 2월 10일·조회 11,310
댓글 1
로그인 후 댓글을 남길 수 있습니다.
- EEnter your name· 2014년 2월 11일제끼나(ㅋ) 누군지 대방 알수있는 네임이오~ 여기서 jaxp jaxp가 xml파싱하는 것이었군요. jaxp를 예를 든건 하나의 샘플로서 제시가 된거죠? JDK에 포함되어 있는 어떤 라이브러리를 다른 버젼으로 사용하고 싶을때 공통으로 사용한다는거네요. 하나 알고 갑니다