Tipps zur Fehlerbehebung bei EJBDEPLOY-Beziehungen

Verwenden Sie diese Informationen für die Behebung von EJBDEPLOY-Problemen.

[z/OS]

DB2 for z/OS Version 7.x

Wenn EJBDeploy eine Datenbeziehung in DB2 for z/OS Version 7.x erstellt, können Fehler auftreten. EJBDeploy erstellt eine Tabelle und verwendet ein Kompositum der zwei Primärschlüssel der EJBs, die zueinander in Beziehung stehen. Wenn die zusammengesetzten Schlüssel größer als 254 Zeichen sind, akzeptiert DB2 for z/OS Version 7.x diese Beziehung nicht, und der folgende Fehler kann auftreten:
DSNT408I SQLCODE = -613, ERROR:  THE PRIMARY KEY OR A UNIQUE CONSTRAINT 
IS TOO LONG OR HAS TOO MANY COLUMNS                                         
DSNT418I SQLSTATE   = 54008 SQLSTATE RETURN CODE              
Dieser Fehler tritt auf, wenn die Primärschlüssel, die für die zwei zugehörigen Beans erstellt werden, Primärschlüssel in Form von Zeichenfolgen besitzen. Das führt dazu, dass das Kompositum aus zwei varchar-Primärschlüsseln (je 250 Zeichen) gebildet wird und somit eine Länge von insgesamt 500 Zeichen hat. Die für DB2 for z/OS Version 7.x zulässige Gesamtlänge von 254 Zeichen wird damit überschritten.
Folgende Punkte sollten Sie bei der Verwendung von Top-down-Zuordnungen beachten, um sicherzustellen, dass dieser Fehler bei Ihnen nicht auftritt:
  • Top-down-Zuordnungen stellen eine Richtlinie dar und müssen mit DBA überprüft werden.
  • Schemata, die von EJBDeploy nach dem Top-down-Muster erstellt wurden, sind nur für Testzwecke und als Richtlinie für das tatsächlich erforderliche Schema vorgesehen. Die Verwendung von Meet-in-the-Middle-Zuordnungen verursachen diesen Fehler nicht.
  • Die beschriebene Einschränkung bei der Verwendung zusammengesetzter Schlüssel tritt bei DB2 Version 8, das eine maximale Schlüssellänge von 2K verwendet, nicht auf.

EJBDEPLOY_JVM_ARGS:

Setzen Sie die Eigenschaft EJBDEPLOY_JVM_ARGS, um JVM-Optionen zu überschreiben, die an den Code übergeben werden, der EJBs implementiert (ejbdeploy.sh). Definieren Sie diese Eigenschaft in der Datei deploymentmanager/bin/setupCmdLine.sh oder appServerHome/bin/setupCmdLine.sh.

Beispielsweise legen die folgenden Angaben fest, dass nicht qualifizierte ("unqualified") SQL generiert werden soll:

export EJBDEPLOY_JVM_ARGS="-DEJBDEPLOY_GENERATE_UNQUALIFIED_SQL=true" 

Der für den Primärschlüssel definierte Umsetzer wird nicht für den Fremdschlüsselwert aufgerufen

Für die Zuordnung von Primärschlüsselfeldern zu Datenbankspalten kann ein Umsetzer für die Konvertierung der Schlüsselwerte verwendet werden. Wenn eine CMP-Bean einen Umsetzer für die Zuordnung seines Primärschlüssels verwendet und diese Bean eine Beziehung hat, in der die Bean am anderen Ende einen Fremdschlüssel enthält, wird für die Fremdschlüsselzuordnung der Umsetzer nicht verwendet.

Die folgenden Fehler können auftreten und zeigen an, dass der für den Primärschlüssel definierte Umsetzer nicht für den Fremdschlüsselwert aufgerufen wird. Während der Ausführung des Befehls ejbDeploy kann die folgende Nachricht angezeigt werden:
No type mapping defined for Java datatype1 to Database datatype2
Die Anwendung kann zur Laufzeit die CMP-Bean am anderen Ende der Beziehung nicht finden.

Sie können diese Einschränkung umgehen, indem Sie einen eigenen Fremdschlüssel in der Datenbanktabelle definieren und eine Zuordnung erstellen, die denselben Umsetzer verwendet, der für den Primärschlüssel in den Enterprise-Beans am anderen Ende der Beziehung definiert ist.


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=rtrb_ejbdeploy390
Dateiname:rtrb_ejbdeploy390.html