本小節說明與相容性相關的以下問題︰
此 Service Registry 發行版本擁有自己的使用者管理和認證機制。計劃在將來的發行版本中將 Registry 更新為基於 SAML 的機制 (如 ebXML Registry 標準中所指定,此元件是該標準的實作)。
Service Registry 3.1 中的以下錯誤與相容性相關。
問題摘要︰如果您透過已部署的 Service Registry 3.0 使用 Service Registry 3.1 Admin Tool,則 cp 和 rm 指令會導致 NullPointerException。
解決方法:Service Registry 3.1 Admin Tool 只能用在 Service Registry 3.1 上;Service Registry 3.0 Admin Tool 只能用在 Service Registry 3.0 上。
問題摘要︰如果在 JDK 1.6 環境中執行 JAXR 用戶端程式,或將 Service Registry 部署在執行 JDK 1.6 的系統上,當程式執行查詢或發佈作業時,便會發生執行階段錯誤。根本問題在於 JDK 1.6 使用 1.3 版本的 SOAP with Attachments API for Java (SAAJ),而 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 建置檔案中為用戶端程式設定四個系統特性
請確保類別路徑中包含以下 JAR 檔案︰
在 Solaris 作業系統上︰
/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>
將以下 <sysproperty> 標籤增加至 build.xml 檔案的 <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"/>
伺服器系統解決方法涉及以下作業︰
將 SAAJ 1.3 JAR 檔案置於 Application Server lib 目錄
增加兩個 JVM 選項以設定系統特性
停止並重新啟動 Application Server
變更至 Application Server lib 目錄。
在 Solaris 作業系統上︰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 作業系統上︰
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 Admin Console。
展開配置節點。
展開伺服器節點 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 (從 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。現在您可以執行登入與發佈作業。
問題摘要︰如果您曾經在 HP-UX 系統上安裝並使用舊版的 Service Registry (從 Java ES 2005Q4),而現在升級至 Service Registry 的 Java ES 5 版本,則無法進行安裝,並顯示 HADB (高可用性資料庫) 發生問題的錯誤訊息。問題在於 HADB 套裝軟體先前安裝在 Java ES 5 安裝程式視為非預設的位置。
如果解除安裝 Application Server 的 Java ES 2005Q4 版本,然後安裝 Service Registry 和 Application Server 的 Java ES 5 版本,也會發生此問題。
解決方法:如果解除安裝 Application Server,則必須在重新安裝之前,先移除 sun-hadb 套裝軟體。
如果是直接從 Service Registry 的 Java ES 2005Q4 版本升級至 Java ES 5 版本,步驟將更為繁複: