문제 요약: JDK 1.6 환경에서 JAXR 클라이언트 프로그램을 실행하는 경우 또는 Service Registry를 JDK 1.6을 실행 중인 시스템에 배포한 경우 해당 프로그램에서 쿼리 또는 게시 작업을 수행하면 런타임 오류가 발생합니다. 기본적인 문제는 JDK 1.6이 SAAJ(Attachments API for Java)에서 1.3 버전의 SOAP를 사용하는 반면 Application Server는 1.2 버전을 사용한다는 것입니다.
해결 방법: 클라이언트 시스템과 서버에 대한 두 가지 유형의 해결 방법이 있습니다.
클라이언트는 JDK 1.6을 실행 중이고 서버는 JDK 1.5를 실행 중인 경우 클라이언트 시스템 해결 방법을 수행하는 방법에 설명된 단계를 수행합니다.
클라이언트는 JDK 1.5를 실행 중이고 서버는 JDK 1.6을 실행 중인 경우 서버 시스템 해결 방법을 수행하는 방법에 설명된 단계를 수행합니다.
클라이언트와 서버 모두 JDK 1.6을 실행 중인 경우 두 가지 해결 방법에 대한 단계를 모두 수행합니다.
클라이언트 시스템이 JDK 1.6을 실행 중인 경우 클라이언트 시스템 해결 방법이 필요합니다. 이 해결 방법은 다음 작업을 함께 수행해야 합니다.
SAAJ 1.3 JAR 파일이 없는 경우 해당 파일을 클래스 경로에 추가
클라이언트 프로그램에 대한 Ant 빌드 파일에 4개의 시스템 등록 정보 설정
클래스 경로에 다음 JAR 파일이 포함되어 있는지 확인합니다.
Solaris OS:
/usr/share/lib/saaj-api.jar /usr/share/lib/saaj-impl.jar
Linux 및 HP-UX 시스템:
/opt/sun/share/lib/saaj-api.jar /opt/sun/share/lib/saaj-impl.jar
예를 들어 Linux 시스템에 대한 Ant 대상에 다음과 같은 설정이 포함된 경우 클래스 경로가 맞는 것입니다.
<path id="classpath"> <fileset dir="/opt/sun/share/lib"> <include name="*.jar"/> </fileset> ... </path>
build.xml 파일에서 다음 <sysproperty> 태그를 <java> 대상에 추가합니다.
<sysproperty key="javax.xml.soap.MessageFactory" value="com.sun.xml.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl"/> <sysproperty key="javax.xml.soap.MetaFactory" value="com.sun.xml.messaging.saaj.soap.SAAJMetaFactoryImpl"/> <sysproperty key="javax.xml.soap.SOAPConnectionFactory" value="com.sun.xml.messaging.saaj.client.p2p.HttpSOAPConnectionFactory"/> <sysproperty key="javax.xml.soap.SOAPFactory" value="com.sun.xml.messaging.saaj.soap.ver1_1.SOAPFactory1_1Impl"/>
서버 시스템 해결 방법은 다음 작업을 함께 수행해야 합니다.
Application Server lib 디렉토리에 SAAJ 1.3 JAR 파일 넣기
두 개의 JVM 옵션을 추가하여 시스템 등록 정보 설정
Application Server 중지 및 다시 시작
Application Server lib 디렉토리로 변경합니다.
Solaris OS: cd /opt/SUNWappserver/appserver/lib
Linux 및 HP-UX 시스템: cd /opt/sun/appserver/lib
Application Server lib 디렉토리에 두 개의 SAAJ JAR 파일에 대한 백업 복사본을 만듭니다. 예를 들면 다음과 같습니다.
cp saaj-api.jar saaj-api.jar.v1.2 cp saaj-impl.jar saaj-impl.jar.v1.2 |
SAAJ 1.3 JAR 파일을 Application Server lib 디렉토리에 복사합니다.
Solaris OS:
cp /usr/share/lib/saaj-api.jar . cp /usr/share/lib/saaj-impl.jar . |
Linux 및 HP-UX 시스템:
cp /opt/sun/share/lib/saaj-api.jar . cp /opt/sun/share/lib/saaj-impl.jar . |
Service Registry 3.1 Administration Guide의 To Use the Application Server Admin Console에 설명된 대로 Application Server 관리 콘솔에 로그인합니다.
구성 노드를 확장합니다.
서버 노드 server-config (Admin Config)를 확장합니다.
JVM 설정을 누릅니다.
JVM 옵션 탭을 누릅니다.
JVM 옵션 추가를 누릅니다.
텍스트 필드에 다음을 입력합니다.
-Djavax.xml.soap.MessageFactory=com.sun.xml.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl |
JVM 옵션 추가를 다시 누릅니다.
텍스트 필드에 다음을 입력합니다.
-Djavax.xml.soap.MetaFactory=com.sun.xml.messaging.saaj.soap.SAAJMetaFactoryImpl |
저장을 누릅니다.
Service Registry 3.1 Administration Guide의 To Stop and Restart the Application Server Domain for the Registry에 설명된 지침을 따릅니다.