EJBDEPLOY リレーションシップ – トラブルシューティングのヒント
この情報を使用して、EJBDEPLOY 問題のトラブルシューティングを実行してください。
![[z/OS]](../images/ngzos.gif)
DB2 for z/OS バージョン 7.x
EJBDeploy によって DB2 for z/OS バージョン 7.x 内のデータの関係が作成されるときに、
問題が発生する可能性があります。
EJBDeploy は、相互に関連する EJB の 2 つの 1 次キーの複合を持つテーブルを作成します。
複合キーが 254 文字より長い場合、
DB2 for z/OS V7.x がこの関係を受け入れず、次のエラーが発生する可能性があります。
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この問題は、2 つの関連する Bean 用に作成された 1 次キーが、 ストリングになっている 1 次キーを持つ場合に発生する可能性があります。 この結果、長さの合計が 500 になる 2 つの可変長 (250) 1 次キーからなる複合が作成されます。 これは、DB2 for z/OS バージョン 7.x での最大値である 254 を超えます。
このような問題が起こらないように、
トップダウン・マッピング利用する際に考慮すべきことは、以下のとおりです。
- トップダウン・マッピングはガイドラインであり、DBA で検討する必要があります。
- EJBDeploy によってトップダウンで作成されるスキーマは、 テスト用にのみ設計されたものであり、実際のスキーマのガイドラインが必要です。 meet-in-the-middle マッピングを使用した場合には、 このような問題は起こりません。
- 複合キー制約の問題は、キーの最大長が 2K である DB2 V8 を使用した場合には起こりません。
EJBDEPLOY_JVM_ARGS:
EJBDEPLOY_JVM_ARGS プロパティーを設定して、 EJB (ejbdeploy.sh) をデプロイするコードに渡される Java 仮想マシン (JVM) オプションをオーバーライドします。 このプロパティーを、以下のロケーションのいずれかに設定します。 deploymentmanager/bin/setupCmdLine.sh または appServerHome/bin/setupCmdLine.sh
例えば、以下は、修飾されていない SQL を生成するように指定します。
export EJBDEPLOY_JVM_ARGS="-DEJBDEPLOY_GENERATE_UNQUALIFIED_SQL=true"
1 次キー用に定義されたコンバーターが、その外部キー値で起動されない
1 次キー・フィールドのデータベース列へのマッピングでは、キー値を変換するのにコンバーターが使用される場合があります。 コンテナー管理パーシスタンス (CMP) Bean がその 1 次キーをマップするのにコンバーターを使用し、その Bean が、相手側の Bean が外部キーを保持しているという関係を持つ場合、その外部キーのマッピングではコンバーターが使用されません。
1 次キー用に定義されたコンバーターが、その外部キー値で起動されないことを示す、以下のエラーが発生する可能性があります。
ejbDeploy コマンドの実行中に、以下のメッセージを受け取ります。
Java datatype1 から Database datatype2 までに型マッピングが定義されていません。ランタイム中に、アプリケーションが関係の相手側に CMP Bean を検出しませんでした。
この制限を回避するためには、独自の外部キーをデータベース表に作成し、関係の相手側のエンタープライズ Bean 上の 1 次キー用に定義されたものと同じコンバーターを使用するマッピングを作成します。