Lorsque vous configurez eXtreme Scale, vous pouvez rencontrer un comportement inattendu avec vos fichiers XML. Les sections ci-après décrivent les problèmes qui peuvent se produire et les solutions.
La règle de déploiement et les fichiers XML ObjectGrid doivent concorder. Si les noms ObjectGrid et les noms de la mappe ne concordent pas, des erreurs se produisent.
Si la liste de la backingMap dans un fichier XML ObjectGrid ne correspond pas à la liste des références de la mappe d'un fichier XML de règle de déploiement, une erreur se produit sur le serveur de catalogue.
Par exemple, le fichier XML ObjectGrid et le fichier XML de la règle de déploiement ci-dessous permettent de démarrer un processus de conteneur. Le fichier de la règle de déploiement contient davantage de références de mappe que celles listées dans le fichier XML ObjectGrid.
ObjectGrid.xml - exemple incorrect
<?xml version="1.0" encoding="UTF-8"?>
<objectGridConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://ibm.com/ws/objectgrid/config ../objectGrid.xsd"
xmlns="http://ibm.com/ws/objectgrid/config">
<objectGrids>
<objectGrid name="accounting">
<backingMap name="payroll" readOnly="false" />
</objectGrid>
</objectGrids>
</objectGridConfig>
deploymentPolicy.xml - exemple incorrect
<?xml version="1.0" encoding="UTF-8"?>
<deploymentPolicy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://ibm.com/ws/objectgrid/deploymentPolicy ../deploymentPolicy.xsd"
xmlns="http://ibm.com/ws/objectgrid/deploymentPolicy">
<objectgridDeployment objectgridName="accounting">
<mapSet name="mapSet1" numberOfPartitions="4" minSyncReplicas="1"
maxSyncReplicas="2" maxAsyncReplicas="1">
<map ref="payroll"/>
<map ref="ledger"/>
</mapSet>
</objectgridDeployment>
</deploymentPolicy>
CWOBJ3179E: La référence à la mappe Ledger dans le groupe de mappes mapSet1 du fichier de descripteur de déploiement Accouting ne fait pas référence à une mappe de sauvegarde valide dans le XML de l'ObjectGrid.S'il manque dans la règle de déploiement des références aux backingMaps répertoriées dans le fichier XML ObjectGrid, un message d'erreur est écrit dans le fichier SystemOut.log. Par exemple :
CWOBJ3178E: La mappe Ledger dans Accounting de l'ObjectGrid référencée dans le XML de l'ObjectGrid est introuvable dans le fichier de descripteur du déploiement.
Solution : identifiez le fichier contient la liste correcte et modifiez le code approprié en conséquence.
Le nom de l'ObjectGrid est référencé à la fois dans le fichier XML ObjectGrid et le fichier XML de la règle de déploiement.
Message : une exception ObjectGridException se produit causée par l'exception IncompatibleDeploymentPolicyException. Exemple :
Causée par : com.ibm.websphere.objectgrid.IncompatibleDeploymentPolicyException : L'objectgridDeployment avec objectGridName "accountin" n'a pas d'objectGrid correspondant dans le XML ObjectGrid.
Le fichier XML ObjectGrid est la liste principale des noms ObjectGrid. Si une règle de déploiement a un nom ObjectGrid qui n'est pas contenu dans le fichier XML ObjectGrid, une erreur se produit.
Solution : vérifiez les détails tels que l'orthographe du nom ObjectGrid. Supprimez les noms redondants ou ajoutez les noms ObjectGrid manquants dans le fichier XML ObjectGrid ou le fichier XML de la règle de déploiement. Dans l'exemple de message, la valeur de l'objectGridName est mal orthographiée ("accountin" au lieu de "accounting").
Si une valeur non valide est attribuée à l'un de ces attributs, la validation XML échoue. Dans l'exemple suivant de fichier XML, une valeur incorrecte INVALID_COPY_MODE est utilisée :
Exemple INVALID_COPY_MODE
<?xml version="1.0" encoding="UTF-8"?>
<objectGridConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://ibm.com/ws/objectgrid/config ../objectGrid.xsd"
xmlns="http://ibm.com/ws/objectgrid/config">
<objectGrids>
<objectGrid name="accounting">
<backingMap name="payroll" copyMode="INVALID_COPY_MODE"/>
<objectGrid/>
</objectGrids>
</objectGridConfig>
Le message suivant s'affiche dans le fichier journal.
CWOBJ2403E : le fichier XML n'est pas valide. Un problème a été détecté avec < null > à la ligne 5. Le message d'erreur est cvc-enumeration-valid : Value 'INVALID_COPY_MODE' is not facet-valid with respect to enumeration '[COPY_ON_READ_AND_COMMIT, COPY_ON_READ, COPY_ON_WRITE, NO_COPY, COPY_TO_BYTES]'. La valeur doit être l'une des valeurs énumérées.
attributs manquants- exemple XML
<?xml version="1.0" encoding="UTF-8"?>
<objectGridConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://ibm.com/ws/objectgrid/config ../objectGrid.xsd"
xmlns="http://ibm.com/ws/objectgrid/config">
<objectGrids>
<objectGrid name="accounting">
<backingMap name="payroll" />
</objectGrids>
</objectGridConfig>
Message :
CWOBJ2403E : le fichier XML n'est pas valide. Un problème a été détecté avec < null > à la ligne 7. Le message d'erreur est le suivant : la balise de fin du type d'élément "objectGrid" doit se terminer avec le délimiteur '>'.
Une exception ObjectGridException concernant le fichier XML non valide se produit avec le nom du fichier XML.
Solution : vérifiez que les balises et attributs nécessaires figurent dans les fichiers XML avec le format correct.
CWOBJ2403E : le fichier XML n'est pas valide. Un problème a été détecté avec < null > à la ligne 7. Le message d'erreur est le suivant : un guillemet ouvrant est attendu pour l'attribut "maxSyncReplicas" associé à un type d'élément "mapSet".
Une exception ObjectGridException concernant le fichier XML non valide se produit également.
Solution : il existe différentes solutions pour une erreur de syntaxe XML. Consultez la documentation appropriée sur l'écriture de script XML.
Message :
Si l'attribut pluginCollectionRef ne correspond à aucun attribut d'ID de l'un des éléments backingMapPluginConfiguration, le message suivant ou un message similaire s'affiche dans le fichier journal.
[7/14/05 14:02:01:971 CDT] 686c060e XmlErrorHandl E CWOBJ9002E :
Message informatif en anglais uniquement : fichier XML non valide. Ligne : 14 ; URI :
null ; Message : la clé 'pluginCollectionRef' avec
la valeur 'bookPlugins' est introuvable pour la contrainte d'identité de
l'élément 'objectGridConfig'.
Le fichier XML suivant est utilisé pour produire l'erreur. Notez que l'attribut pluginCollectionRef de la BackingMap book est défini sur bookPlugins et que l'ID de la backingMapPluginCollection est collection1.
Référencement d'un attribut XML inexistant - Exemple
<?xml version="1.0" encoding="UTF-8"?>
<objectGridConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://ibm.com/ws/objectgrid/config../objectGrid.xsd"
xmlns="http://ibm.com/ws/objectgrid/config">
<objectGrids>
<objectGrid name="bookstore">
<backingMap name="book" pluginCollectionRef="bookPlugin" />
</objectGrid>
</objectGrids>
<backingMapPluginCollections>
<backingMapPluginCollection id="collection1">
<bean id="Evictor"
className="com.ibm.websphere.objectgrid.plugins.builtins.LRUEvictor" />
</backingMapPluginCollection>
</backingMapPluginCollections>
</objectGridConfig>
Solution :
Pour résoudre le problème, assurez-vous que la valeur de chaque pluginCollectionRef correspond à l'ID de l'un des éléments de la backingMapPluginCollection. Modifiez simplement le nom de pluginCollectionRef en collection1 pour ne pas recevoir cette erreur. Une autre solution consiste à modifier l'ID de la backingMapPluginCollection existante pour le faire correspondre à pluginCollectionRef, ou d'ajouter une backingMapPluginCollection ayant un ID correspond à pluginCollectionRef.
Lorsque vous tentez de valider XML avec un kit de développement de logiciels n'ayant pas l'implémentation nécessaire, le fichier journal contient l'erreur suivante :
La validation XML XmlConfigBuild est activée
SystemErr R com.ibm.websphere.objectgrid
SystemErr R at com.ibm.ws.objectgrid.ObjectGridManagerImpl.getObjectGridConfigurations
(ObjectGridManagerImpl.java:182)
SystemErr R at com.ibm.ws.objectgrid.ObjectGridManagerImpl.createObjectGrid(ObjectGridManagerImpl.java:309)
SystemErr R at com.ibm.ws.objectgrid.test.config.DocTest.main(DocTest.java:128)
SystemErr R Caused by: java.lang.IllegalArgumentException : aucun attribut implémenté
SystemErr R at org.apache.crimson.jaxp.DocumentBuilderFactoryImpl.setAttribute(DocumentBuilderFactoryImpl.java:93)
SystemErr R at com.ibm.ws.objectgrid.config.XmlConfigBuilder.<init>XmlConfigBuilder.java:133)
SystemErr R at com.ibm.websphere.objectgrid.ProcessConfigXML$2.runProcessConfigXML.java:99)...
Le kit de développement de logiciels utilisé ne contient pas l'implémentation de la fonction JAXP nécessaire pour valider les fichiers XML en fonction d'un schéma.
Solution : si vous souhaitez valider XML en utilisant un kit SDK qui ne contient pas l'implémentation JAXP, téléchargez Apache Xerces, et incluez ses fichiers JAR (Java archive) dans le chemin d'accès aux classes. Pour éviter ce problème, après avoir téléchargé Xerces et inclus les fichiers JAR dans le chemin d'accès aux classes, vous pouvez valider le fichier XML.