Wenn Sie eXtreme Scale konfigurieren, kann ein unerwartetes Verhalten bei Ihren XML-Dateien auftreten. In den folgenden Abschnitten sind Probleme, die auftreten können, und deren Lösungen beschrieben.
Die XML-Datei für die Implementierungsrichtlinien und die ObjectGrid-XML-Datei müssen übereinstimmen. Es treten Fehler auf, wenn die ObjectGrid-Namen und Map-Namen in der XML-Datei für die Implementierungsrichtlinien und in der ObjectGrid-XML-Datei nicht identisch sind.
Wenn die BackingMap-Liste in einer ObjectGrid-XML-Datei nicht mit der Liste der Map-Referenzen in der XML-Datei für Implementierungsrichtlinien übereinstimmt, tritt ein Fehler im Katalogserver auf.
Die folgende ObjectGrid-XML-Datei und die folgende XML-Datei für Implementierungsrichtlinien werden beispielsweise zum Starten eines Containerprozesses verwendet. Die Datei für die Implementierungsrichtlinien enthält mehr Map-Referenzen, als in der ObjectGrid-XML-Datei aufgelistet sind.
Beispiel für eine ungültige Datei "ObjectGrid.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" readOnly="false" />
</objectGrid>
</objectGrids>
</objectGridConfig>
Beispiel für eine ungültige Datei "deploymentPolicy.xml"
<?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: Die Map ledger, die im MapSet mapSet1 der Implementierungsdeskriptordatei von ObjectGrid accounting referenziert wird, referenziert keine gültige BackingMap aus der ObjectGrid-XML.Wenn in der Implementierungsrichtlinie Map-Referenzen auf BackingMaps fehlen, die in der ObjectGrid-XML-Datei aufgelistet sind, wird eine Fehlernachricht in der Datei SystemOut.log aufgezeichnet. Beispiel:
CWOBJ3178E: Die Map ledger in ObjectGrid accounting, die in der ObjectGrid-XML-Datei referenziert wird, wurde nicht in der Implementierungsdeskriptordatei gefunden.
Lösung: Bestimmen Sie, welche Datei die richtige Liste enthält, und ändern Sie den relevanten Code entsprechend.
Der Name des ObjectGrids wird in der ObjectGrid-XML-Datei und in der XML-Datei für Implementierungsrichtlinien referenziert.
Nachricht: Es tritt eine Ausnahme des Typs "ObjectGridException" ein, die durch eine Ausnahme des Typs "IncompatibleDeploymentPolicyException" verursacht wird. Es folgt ein Beispiel:
Caused by: com.ibm.websphere.objectgrid.IncompatibleDeploymentPolicyException: The objectgridDeployment with objectGridName "accountin" does not have a corresponding objectGrid in the ObjectGrid XML.
Die ObjectGrid-XML-Datei ist die Masterliste mit ObjectGrid-Namen. Wenn eine Implementierungsrichtlinie einen ObjectGrid-Namen enthält, der nicht in der ObjectGrid-XML-Datei enthalten ist, tritt ein Fehler auf.
Lösung: Überprüfen Sie die Rechtschreibung des ObjectGrid-Namens. Entfernen Sie alle zusätzlichen Namen, bzw. fügen Sie fehlende ObjectGrid-Namen in der ObjectGrid-XML-Datei bzw. in der XML-Datei für Implementierungsrichtlinien hinzu. In der Beispielnachricht ist der ObjectGrid-Name falsch geschrieben: "accountin" anstatt "accounting".
Wenn einem dieser Attribute ein ungültiger Wert zugeordnet wird, scheitert die XML-Validierung. In der folgenden XML-Beispieldatei wird der ungültige Wert INVALID_COPY_MODE verwendet:
Beispiel für 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>
Die folgende Nachricht wird im Protokoll aufgezeichnet:
CWOBJ2403E: Die XML-Datei ist ungültig. Es wurde ein Fehler in < null > in Zeile 5 gefunden. Die Fehlernachricht ist "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]'". It must be a value from the enumeration.
Fehlende Attribute - Beispiel-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>
Nachricht:
CWOBJ2403E: Die XML-Datei ist ungültig. Es wurde ein Fehler in < null > in Zeile 7 gefunden. Die Fehlernachricht ist "The end-tag for element type "objectGrid" must end with a '>' delimiter."
Es wird eine Ausnahme des Typs "ObjectGridException" für die ungültige XML-Datei ausgelöst, die den Namen der XML-Datei enthält.
Lösung: Stellen Sie sicher, dass die erforderlichen Tags und Attribute im richtigen Format in den XML-Dateien enthalten sind.
CWOBJ2403E: Die XML-Datei ist ungültig. Es wurde ein Fehler in < null > in Zeile 7 gefunden. Die Fehlernachricht ist "Open quote is expected for attribute "maxSyncReplicas" associated with an element type "mapSet"".
Außerdem wird eine Ausnahme des Typs "ObjectGridException" für die ungültige XML-Datei ausgelöst.
Lösung: Es können verschiedene Lösungen für einen bestimmten XML-Syntaxfehler verwendet werden. Die Syntax für das XML-Script können Sie der entsprechenden Dokumentation entnehmen.
Nachricht:
Wenn das Attribut "pluginCollectionRef" mit keiner der IDs der backingMapPluginConfiguration-Elemente übereinstimmt, wird die folgende Nachricht oder eine ähnliche im Protokoll angezeigt:
[7/14/05 14:02:01:971 CDT] 686c060e XmlErrorHandl E CWOBJ9002E:
This is an English only Error message: Invalid XML file. Line: 14; URI:
null; Message: Key 'pluginCollectionRef' with
value 'bookPlugins' not found for identity constraint of
element 'objectGridConfig'.
Die folgende XML-Datei wird verwendet, um den Fehler zu produzieren. Beachten Sie, dass das Attribut "pluginCollectionRef" für den Namen der BackingMap "book" auf "bookPlugins" gesetzt ist und dass die einzige backingMapPluginCollection die ID "collection1" hat:
Referenzierung eines nicht vorhandenen Attributs - XML-Beispiel
<?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>
Lösung:
Zum Beheben des Problems müssen Sie sicherstellen, dass der Wert jedes pluginCollectionRef-Attributs mit der ID eines der backingMapPluginCollection-Elemente übereinstimmt. Ändern Sie einfach den Wert des Attributs "pluginCollectionRef" in "collection1", damit dieser Fehler nicht mehr auftritt. Alternativ können Sie die ID des vorhandenen backingMapPluginCollection-Elements so ändern, dass sie dem Wert des Attributs "pluginCollectionRef" entspricht, oder ein zusätzliches Element "backingMapPluginCollection" mit einer ID hinzufügen, die dem Wert des Attributs "pluginCollectionRef" entspricht.
Wenn Sie versuchen, die XML mit einem SDK zu validieren, das die erforderlichen Implementierungen nicht enthält, enthält das Protokoll den folgenden Fehler:
XmlConfigBuild XML validation is enabled
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: No attributes are implemented
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)...
Das verwendete SDK enthält nicht die Implementierung der JAXP-Funktion, die erforderlich ist, um XML-Dateien anhand des Schemas zu validieren.
Lösung: Wenn Sie XML mit einem SDK validieren möchten, das keine JAXP-Implementierung enthält, laden Sie Apache Xerces herunter, und fügen Sie die JAR-Dateien von Apache Xerces in den Klassenpfad ein. Sie können dieses Problem vermeiden, indem Sie Apache Xerces herunterladen und die JAR-Dateien in den Klassenpfad einfügen. Anschließend können Sie die XML-Datei erfolgreich validieren.