Notes de version de Service Registry 2005Q4

Des erreurs se produisent après la création d'un ExtrinsicObject ou d'un ExternalLink avec un concept non valide (6318002)

Résumé du problème : Dans Web Console, si vous créez un ExtrinsicObject et sélectionnez un concept se trouvant sous un concept autre qu'un ExtrinsicObject, la création semble réussir mais en fait des erreurs se sont produites. Le même problème survient si vous créez un ExternalLink et sélectionnez un concept se trouvant sous un concept autre qu'un ExternalLink.

Des erreurs apparaissent dans le journal du serveur sous la forme NullPointerException.

Si le concept est un autre sous-concept sous RegistryObject, l'effet principal est que l'objet est introuvable lors des recherches. Si le concept se trouve sous un ClassificationScheme autre qu'un ObjectType, la base de données est endommagée. Des erreurs se produisent lors de l'exécution (InvocationTargetException ) lorsque vous redémarrez le serveur.

Le concept du type d'objet doit être un sous-concept d'un concept ExtrinsicObject ou ExternalLink, mais Web Console ne fait pas appliquer cette exigence.

Solution : Utilisez l'outil d'administration pour trouver le ou les objets utilisant un concept incorrect. Utilisez la commande select pour trouver les objets et la commande rm pour les supprimer. Les étapes de cette tâche sont détaillées ci-dessous.

  1. Redémarrez Service Registry n suivantlsinstructions de la section To Stop and Restart the Application Server Domain for the Registry in Service Registry 3 2005Q4 Administration Guide.

  2. Lancez l'outil d'administration, soit en tant qu'administrateur de Registry, soit en tant que propriétaire des objets corrompus, en suivant les instructions de la section Starting the Admin Tool in Service Registry 3 2005Q4 Administration Guide.

  3. Accédez au niveau supérieur de la base de données :


    admin> cd /
    
  4. Utilisez la commande select pour répertorier les objets à supprimer. Si vous avez lancé l'outil en tant qu'administrateur de Registry, utilisez la commande suivante (sur une seule ligne ) :


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

    Si vous avez lancé l'outil en tant que propriétaire des objets, utilisez la commande suivante (sur une seule ligne ) :


    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. Utilisez la commande rm pour supprimer les objets. Spécifiez l'URN de chaque objet à supprimer.


    admin> rm urn1 urn2 ...
    
  6. Exécutez à nouveau la commande select pour vérifier que les objets ne figurent plus dans Registry.