Service Registry 3 2005Q4 版本說明

建立具有無效概念的 ExtrinsicObjectExternalLink 後發生錯誤 (6318002)

問題摘要:在 Web 主控台中,如果您建立 ExtrinsicObject 時選取的概念並非 ExtrinsicObject 的子概念,則建立顯示為成功,但實際已發生錯誤。如果您建立 ExternalLink 時選取的概念並非 ExternalLink 的子概念,則會發生相同錯誤。

該錯誤在伺服器記錄中顯示為 NullPointerException

如果該概念是 RegistryObject 下的其他子概念,則主要的影響是搜尋新物件時找不到該物件。如果該概念在 ClassificationScheme (而不是 ObjectType) 之下,則會毀壞資料庫。重新啟動伺服器時發生執行階段錯誤 (InvocationTargetException)。

物件類型概念必須是 ExtrinsicObjectExternalLink 概念中的子概念,但 Web 主控台不強制此需求。

解決方法:使用 Admin Tool 尋找使用錯誤概念的某個或多個物件。使用 select 指令尋找物件,使用 rm 刪除物件。此作業的步驟如下:

  1. 按照「Service Registry 3 2005Q4 管理指南」中的「停止並重新啟動 Registry 的 Application Server 網域」所述重新啟動 Service Registry。

  2. 按照「Service Registry 3 2005Q4 管理指南」中的「啟動 Admin Tool」所述,做為 Registry 管理員或已毀壞物件的所有者啟動 Admin Tool。

  3. 移至資料庫中的頂層位置:


    admin> cd /
    
  4. 使用 select 指令列出要移除的物件。如果您做為 Registry 管理員啟動此工具,請使用以下指令 (全部在一行):


    admin> select ro.* FROM RegistryObject ro, ClassificationNode cn 
    WHERE ro.objectType = cn.id AND NOT ( cn.path = 
    '/urn:oasis:names:tc:ebxml-regrep:classificationScheme:ObjectType/RegistryObject' 
    or cn.path like 
    '/urn:oasis:names:tc:ebxml-regrep:classificationScheme:ObjectType/RegistryObject/%' )
    

    如果您做為物件的所有者啟動此工具,請使用以下指令 (全部在一行):


    admin> select ro.* FROM RegistryObject ro, ClassificationNode cn, 
    AffectedObject ao, AuditableEvent ae WHERE ro.objectType = cn.id AND 
    ae.user_ = $currentUser AND ao.id = ro.id AND ao.eventId = ae.id AND NOT 
    ( cn.path = 
    '/urn:oasis:names:tc:ebxml-regrep:classificationScheme:ObjectType/RegistryObject' 
    or cn.path like 
    '/urn:oasis:names:tc:ebxml-regrep:classificationScheme:ObjectType/RegistryObject/%' )
    
  5. 使用 rm 指令刪除物件。指定要刪除之各物件的 URN。


    admin> rm urn1 urn2 ...
    
  6. 再次執行 select 指令以驗證物件已不在 Registry 中。