問題摘要︰如果您曾經安裝並使用舊版 Service Registry (從 Java ES 2005Q4),而現在升級至 Application Server 的 Java ES 5 版本,卻沒有升級至 Service Registry 的 Java ES 5 版本,則當您試圖使用先前透過 Web 主控台建立的憑證時,會導致登入失敗。
解決方法:編輯 web.xml 檔案以及 Service Registry 的安全性策略檔案。
若要停止 Registry 的 Application Server 網域並編輯 web.xml 檔案,請執行以下步驟:
變更為 Service Registry 安裝目錄︰
在 Solaris 作業系統上︰cd /opt/SUNWsoar/install
在 Linux 和 HP-UX 系統上︰cd /opt/sun/SUNWsoar/install
停止 Registry 的 Application Server 網域︰
Ant-base/ant -f build-install.xml appserver.domain.stop
變更為目錄 RegistryDomain-base /domains/registry/applications/j2ee-modules/soar/WEB-INF/ 。
在文字編輯器中開啟檔案 web.xml。
在 </web-resource-collection> 標籤後的 <security-constraint> 標籤內插入以下內容︰
<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 作業系統上︰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 檔案。
重新啟動 Registry 的 Application Server 網域︰
Ant-base/ant -f build-install.xml appserver.domain.start
開啟您的 Web 瀏覽器,然後請至 URL http://localhost:6060/soar。現在您可以執行登入與發佈作業。