Service Registry 3 2005Q4 Release Notes

Errors Occur After Creation of ExtrinsicObject or ExternalLink with Invalid Concept (6318002)

Problem Summary: In the Web Console, if you create an ExtrinsicObject and select a concept that is under a concept other than ExtrinsicObject, the creation appears to succeed, but in fact errors have occurred. The same problem occurs if you create an ExternalLink and select a concept that is under a concept other than ExternalLink.

The errors appear in the server log as NullPointerException.

If the concept is another subconcept under RegistryObject, the main effect is that the new object cannot be found when you search for it. If the concept is under a ClassificationScheme other than ObjectType, the database is corrupted. Runtime errors occur (InvocationTargetException) when you restart the server.

The object type concept must be a subconcept within the ExtrinsicObject or ExternalLinkconcept, but the Web Console does not enforce this requirement.

Workaround: Use the Admin Tool to find the object or objects that use the wrong concept. Use the select command to find the objects and the rm to delete them. The steps for this task follow.

  1. Restart Service Registry as described in To Stop and Restart the Application Server Domain for the Registry in Service Registry 3 2005Q4 Administration Guide.

  2. Start the Admin Tool, either as a registry administrator or as the owner of the corrupted objects, as described in Starting the Admin Tool in Service Registry 3 2005Q4 Administration Guide.

  3. Go to the top-level location in the database:


    admin> cd /
    
  4. Use the select command to list the objects to be removed. If you started the tool as a registry administrator, use the following command (all on one line):


    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/%' )
    

    If you started the tool as the owner of the objects, use the following command (all on one line):


    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. Use the rm command to delete the objects. Specify the URN of each object to be deleted.


    admin> rm urn1 urn2 ...
    
  6. Run the select command again to verify that the objects are no longer in the Registry.