이 절에서는 호환성과 관련된 다음과 같은 문제에 대해 설명합니다.
이 Service Registry 릴리스에서는 자체 사용자 관리 및 인증 메커니즘을 사용합니다. 이후 릴리스에서는 이 구성 요소가 구현하는 ebXML Registry 표준에 지정된 SAML 기반 메커니즘으로 레지스트리를 업데이트할 계획입니다.
Service Registry 3.1에서 발견된 다음 버그는 호환성과 관련된 것입니다.
문제 요약: 배포된 Service Registry 3.0에서 Service Registry 3.1 관리 도구를 사용하는 경우 cp 및 rm과 같은 명령을 실행하면 NullPointerException이 발생됩니다.
해결 방법: Service Registry 3.1에서만 Service Registry 3.1 관리 도구를 사용하고 Service Registry 3.0에서는 Service Registry 3.0 관리 도구를 사용합니다.
문제 요약: 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에 설명된 지침을 따릅니다.
문제 요약: Java ES 2005Q4에서 이전 버전의 Service Registry를 설치하여 사용하다가 이제Java ES 5 버전의 Application Server로 업그레이드했지만 Java ES 5 버전의 Service Registry로 업그레이드하지 않은 경우 웹 콘솔에서 이전에 만든 인증서와 동일한 인증서를 사용하려고 하면 로그인에 실패합니다.
해결 방법: web.xml 파일과 Service Registry의 보안 정책 파일을 편집합니다.
해당 레지스트리에 대한 Application Server 도메인을 중지하고 web.xml 파일을 편집하려면 다음 단계를 수행합니다.
Service Registry 설치 디렉토리를 다음과 같이 변경합니다.
Solaris OS: cd /opt/SUNWsoar/install
Linux 및 HP-UX 시스템: cd /opt/sun/SUNWsoar/install
레지스트리에 대한 Application Server 도메인을 중지합니다.
Ant-base/ant -f build-install.xml appserver.domain.stop
RegistryDomain-base /domains/registry/applications/j2ee-modules/soar/WEB-INF/ 디렉토리로 변경합니다.
텍스트 편집기에서 web.xml 파일을 엽니다.
<security-constraint> 태그 내의 </web-resource-collection> 태그 다음에 다음을 삽입합니다.
<auth-constraint> <role-name>have.client.cert</role-name> </auth-constraint>
</security-constraints> 태그 다음에 다음을 삽입합니다.
<error-page> <error-code>400</error-code> <location>/registry/thin/AuthenticateError.jsp</location> </error-page> <security-role> <description>all subjects who have client certificates</description> <role-name>have.client.cert</role-name> </security-role>
web.xml 파일을 저장하고 닫습니다.
보안 정책 파일을 편집하고 도메인을 다시 시작하려면 다음 단계를 수행합니다.
다음 디렉토리로 변경합니다.
Solaris OS: cd /var/opt/SUNWsoar/domains/registry/config
Linux 및 HP-UX 시스템: cd /var/opt/sun/SUNWsoar/domains/registry/config
텍스트 편집기에서 server.policy 파일을 엽니다.
이 파일에 다음 허가를 추가합니다.
grant codeBase "file:${com.sun.aas.instanceRoot}/applications/j2ee-modules/soar/WEB-INF/lib/-"{ permission java.lang.reflect.ReflectPermission "suppressAccessChecks"; }; grant codeBase "file:${com.sun.aas.instanceRoot}/generated/jsp/j2ee-modules/soar/-" { permission java.lang.reflect.ReflectPermission "suppressAccessChecks"; };
server.policy 파일을 저장하고 닫습니다.
레지스트리에 대한 Application Server 도메인을 다시 시작합니다.
Ant-base/ant -f build-install.xml appserver.domain.start
웹 브라우저를 열어 URL(http://localhost:6060/soar로 이동합니다. 이제 로그인하여 게시할 수 있습니다.
문제 요약: HP-UX 시스템에서 Java ES 2005Q4의 이전 버전 Service Registry를 설치하여 사용하다가 이제 Java ES 5 버전의 Service Registry로 업그레이드할 경우 고가용성 데이터베이스(HADB)에 문제가 있다는 오류 메시지와 함께 설치에 실패합니다. 문제가 발생하는 것은 Java ES 5 설치 프로그램이 기본 위치로 사용하지 않는 위치에 HADB 패키지가 설치되었기 때문입니다.
또한 Java ES 2005Q4 버전의 Application Server를 제거한 다음 Java ES 5 버전의 Service Registry 및 Application Server를 설치할 경우 이 문제가 발생합니다.
해결 방법: Application Server를 제거한 경우 다시 설치하기 전에 sun-hadb 패키지를 제거해야 합니다.
Java ES 2005Q4 버전의 Service Registry에서 Java ES 5 버전으로 직접 업그레이드하는 경우 단계가 더 복잡합니다.