Anwendungskonfigurationskonflikte beheben

In einer gemeinsam genutzten Umgebung mit mehreren Benutzern mit Verwaltungsaufgaben ist es möglich, dass verschiedene Benutzer mit Verwaltungsaufgaben gleichzeitig versuchen, dieselben Konfigurationsdokumente von WebSphere Application Server zu aktualisieren. Die folgenden Informationen sollen Ihnen helfen, Ausnahmen zu erkennen und zu behandeln, die auftreten können, wenn mehrere Benutzer mit Verwaltungsaufgaben versuchen, dieselben Konfigurationsdokumente gleichzeitig zu aktualisieren.

Jedesmal, wenn Sie sich bei einem Verwaltungsclient über die Administrationskonsole oder über das Tool "wsadmin" anmelden, wird eine eindeutige Arbeitsbereichssitzung erstellt, um alle vorgenommenen Konfigurationsänderungen zu verfolgen. Jeder Arbeitsbereichssitzung wird ein temporäres Arbeitsbereichsverzeichnis zugeordnet. In diesem Verzeichnis werden alle Konfigurationsdateien gespeichert, die Sie während einer Anmeldesitzung ändern. Die Dateien in diesem Verzeichnis werden zunächst aus dem Zellenkonfigurationsrepository extrahiert, und Ihre Änderungen existieren nur in den Arbeitsbereichskopien dieser Dateien, bis sie gespeichert werden. Wenn die Änderungen gespeichert werden, stellt die Laufzeitumgebung für die Konfigurationsverwaltung sicher, dass die Konfigurationsdateien, die Sie geändert haben, nicht bereits von einem anderen Benutzer geändert und gesichert wurden, und kopiert die geänderten Dateien anschließend aus dem Arbeitsbereich zurück in das Master-Repository.

Solange in den verschiedenen Arbeitsbereichssitzungen verschiedene Konfigurationsdateien geändert werden, gibt es keine Speicherkonflikte. Werden in mehreren Arbeitsbereichssitzungen jedoch dieselben Konfigurationsdateien geändert, tritt ein Speicherkonflikt auf, und es werden nur die in der ersten Arbeitsbereichssitzung vorgenommenen Änderungen in das Konfigurationsrepository für die Zelle übernommen. Wenn weitere Benutzer versuchen, die Änderungen in denselben Konfigurationsdateien zu speichern, erhalten Sie eine Ausnahme wegen eines Speicherkonflikts.

Hinsichtlich der Anwendungsimplementierung wird eine spezielle Vorsorge in Bezug auf die Unterstützung der gleichzeitigen Implementierung von Anwendungen getroffen. Die in verschiedenen Arbeitsbereichssitzungen eingeleiteten Anwendungsimplementierungen können dieselbe Datei serverindex.xml ändern. In dieser Situation verwendet die Laufzeitumgebung für die Konfigurationsverwaltung einen Zusammenführungsalgorithmus für die Datei serverindex.xml, der folgende Implementierungsvorgänge unterstützt:
  • Gleichzeitige Implementierung verschiedener Anwendungen in verschiedenen Anwendungsservern oder verschiedenen Anwendungs-Server-Clustern
  • Gleichzeitige Implementierung verschiedener Anwendungen im selben Anwendungsserver oder Anwendungs-Server-Cluster

Gewöhnlich können gleichzeitige oder parallele Anwendungsimplementierungsszenarien sicher und ohne zusätzlichen Aufwand seintes des Systemadministrators ausgeführt werden. Es gibt jedoch Anwendungsimplementierungsszenarien, die der Zusammenführungsalgorithmus für die Datei serverindex.xml nicht behandeln kann. Beispielsweise ist der Zusammenführungsalgorithmus für die Datei serverindex.xml für Situationen, in denen Dateiänderungen gleichzeitig in derselben Anwendung, im selben Cluster oder im selben Server implementiert werden, nicht geeignet. Außerdem kann der Zusammenführungsalgorithmus keine Konfigurationskonflikte behandeln, die während der Ausführung anderer paralleler Verwaltungsaktivitäten auftreten, die mehrere Anwendungsimplementierungen umfassen.

Vorausgesetzte Objektreferenzen abrufen und Parameterliste erstellen

Es gibt einige einfache Maßnahmen, die Sie ergreifen können, um Konfigurationskonflikten vorzubeugen und Konflikte zu beheben, wenn Sie das Tool "wsadmin" verwenden. Die wsadmin-Befehle, die für die Erkennung und Behebung von Konfigurationskonflikten verwendet werden, stützen sich auf das Abrufen einer Referenz auf die MBean "ConfigService" und den anschließenden Aufruf der von dieser MBean bereitgestellten Methode "getConflictDocuments", um festzustellen, ob Benutzer in ihren Arbeitsbereichssitzungen widersprüchliche Änderungen vorgenommen haben. Weitere Informationen zu dieser MBean finden Sie in der Javadoc zur MBean "ConfigService".

Das folgende Codebeispiel veranschaulicht, wie Sie die vorausgesetzten Objektreferenzen abrufen und die Parameterliste erstellen, die für den Aufruf der Methode "getConflictDocuments" erforderlich ist, die von der MBean "ConfigService" bereitgestellt wird:

// Referenz auf MBean "ConfigService" abrufen

wsadmin>cs = AdminControl.queryNames('WebSphere:*,type=ConfigService')

// ObjectName für MBean ConfigService abrufen

wsadmin>import javax.management as mgmt

wsadmin>csName=mgmt.ObjectName(cs)

// Sitzungsobjekt für aktuelle Sitzung des Benutzers mit Verwaltungsaufgaben abrufen

wsadmin>session=AdminConfig.getCurrentSession()

// Verwaltungssitzungsobjekt und

// MBean-Operationsargumente bearbeiten und vorbereiten

wsadmin>from com.ibm.websphere.management import Session

wsadmin>from jarray import array

wsadmin>parms=array([session], java.lang.Object)

wsadmin>ptype=array(['com.ibm.websphere.management.Session'], java.lang.String)
Nach der Initialisierung der Variablen und der Parameterliste wird die Methode "getConflictDocuments" aufgerufen. Sind keine Konflikte vorhanden, gibt die Methode die folgende Nachricht zurück:
// MBean-Methode "getConflictDocuments" aufrufen, um eine Liste der Dokumentkonflikte anzuzeigen

wsadmin>AdminControl.invoke_jmx(csName,'getConflictDocuments', parms, ptype)
{}
wsadmin>
Sind Konfigurationskonflikte vorhanden, die auf Änderungen zurückzuführen sind, die ein anderer Benutzer in einer Arbeitssitzung vorgenommen hat, gibt die Methode eine Nachricht ähnlich der folgenden zurück, in der die geänderten XML-Dateien aufgelistet werden:
Listing 3
wsadmin>AdminControl.invoke_jmx(csName,'getConflictDocuments', parms, ptype)
{['cells/Zellenname/nodes/Knotenname/serverindex.xml',cells/Zellenname/applications/
DefaultApplication.ear.ear/deltas/DefaultApplication.ear/delta-1278791909117', 
... <list abbreviated> ...} 
   
   wsadmin>
In dieser Situation können Sie den Befehl "AdminConfig.reset()" absetzen, um die Änderungen zu verwerfen, die Sie seit der letzten Ausführung des Befehls "AdminConfig.save()" vorgenommen haben:
wsadmin>AdminConfig.reset()

Selbst wenn Sie die Methode "getConflictDocuments" vor dem Speichern Ihrer Änderungen aufrufen und feststellen, dass keine Konfliktdokumente vorhanden sind, ist nicht gewährleistet, dass die Speicheroperation auch bei sofortigem Absetzen des Befehls "AdminConfig.save()" erfolgreich verläuft, weil dieselben Konfigurationsdateien in der Zeit zwischen Aufrufen der Methode "getConflictDocuments" und dem Absetzen des Befehls "AdminConfig.save()" in einer anderen Sitzung geändert werden können.

Wenn das Speichern im Master-Repository nicht erfolgreich ist, wird eine Ausnahme vom Typ "ConfigServiceException" ähnlich der folgenden ausgegeben:

WASX7015E: Beim Ausführen des Befehls "AdminConfig.save()" ist eine Ausnahme eingetreten. Ausnahmeinformationen:
com.ibm.websphere.management.exception.ConfigServiceException 
java.security.PrivilegedActionException: 
java.security.PrivilegedActionException: 
com.ibm.ws.sm.workspace.WorkSpaceException: RepositoryException
Gehen Sie wie folgt vor, wenn Sie eine Ausnahme aufgrund von Speicherkonflikten empfangen:
  1. Verwenden Sie die Methode "getConflictDocuments", um festzustellen, welche Konfigurationsdateien bereits von einem anderen Benutzer gespeichert wurden.
  2. Setzen Sie den Befehl "AdminConfig.reset()" ab, um Ihre Änderungen zu verwerfen.
  3. Nachdem Sie die Änderungen verworfen haben, können Sie Ihre Änderungen erneut auf die entsprechenden Konfigurationsdateien anwenden und den Befehl "AdminConfig.save()" absetzen, um diese Änderungen zu speichern.

Der nachfolgende Versuch, die Änderungen zu speichern, ist wahrscheinlich erfolgreich, weil gewöhnlich nicht mehrere Speicherkonflikte in derselben Sitzung auftreten. Sollte dieser nachfolgende Speicherversuch jedoch scheitern, wiederholen Sie die vorherigen Aktionen, und speichern Sie Ihre Änderungen erneut.


Symbol, das den Typ des Artikels anzeigt. Referenzartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rrun_app_config_conflicts
Dateiname:rrun_app_config_conflicts.html