문제 요약: 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로 이동합니다. 이제 로그인하여 게시할 수 있습니다.