Question & Answer
Question
Websphere (以下WAS) <=> DB2 Connect ゲートウェイ <=> DB2 for AS/400 の環境下で JDBC アプリケーションが -4499 エラーで実行できないのはなぜですか?
Answer
JCC ドライバーの DB2 Connect ゲートウェイを介した DB2 for AS/400 V5R2 (又はそれ以上のバージョン) への接続に関する機知の制限事項です。
DB2 Connect ゲートウェイを介さずに OS/400 V5R2 (又はそれ以上のバージョン) へ直接接続はできますが、DB2 Connect ゲートウェイを介す場合に接続できないことがあります。
以下はこの現象がおきたときの参考 JCC トレースです ( ERRORCODE=-4499 と、DDM パラメーターの値がサポートされていません。 ("invalid DDM parameter") が記録されています)。
ロケールの設定により上記の文字列は異なりますが、 ERRORCODE, SQLSTATE そして code [11277] は変わりません。
以下はこの現象がおきたときの参考 db2diag.log の関連するエラー "Invalid SQL statement length" です。
その WAS/JDBC アプリケーションから実行できない SQL は CLP からは問題なく実行できると考えられます。
また、この問題を起こす SQL を JDBC Type4 で直接 DB2 for AS/400 へ実行する小さな JDBC プログラムを作成することにより、直接接続した場合にはこの問題が生じないことが確認できます。
この事象の解決策は、DB2 Connect ゲートウェイを介さずに JDBC Type4 にて直接 DB2 for AS/400へアプリケーションが接続するようにすることです。
WAS の場合、DB2 Connect ゲートウェイの代わりに Type4 データソースへ DB2 for AS/400 のデータベース名、ホスト名、DRDA のポート番号の設定が必要です。
WAS と AS/400 間の TCP/IP 接続にファイアーウォールなどが影響を与えていないか確認してください。
これらの設定を使用した新規データソースを作成すれば WAS のテストコネクションオプションにて簡単に確認することが可能だと考えられます。
この新規データソースにて接続が確認できれば、この設定と同じように既存のアプリを設定することが有効な回避策となります。
この環境下でのライセンスに関しては、新たに DB2 Connect Personal Edition を購入する必要はありません。
DB2 Connect Unlimited Edition から WAS サーバへ db2jcc_license_cisuz.jar をコピーするだけです。
この場合、ライセンスファイル (db2jcc_license_cisuz.jar) を AS/400 へ接続するすべての JCC クライアントにコピーする必要があります。
注: この挙動は将来断り無く変更されることがあります。この Technote の内容が有効か否かは上記のメッセージを JCC トレースと db2diag.log で確認することにより可能です。
DB2 Connect ゲートウェイを介さずに OS/400 V5R2 (又はそれ以上のバージョン) へ直接接続はできますが、DB2 Connect ゲートウェイを介す場合に接続できないことがあります。
以下はこの現象がおきたときの参考 JCC トレースです ( ERRORCODE=-4499 と、DDM パラメーターの値がサポートされていません。 ("invalid DDM parameter") が記録されています)。
- [14/10/03 14:19:24:563 JST] 000000b6 logwriter 3 [jcc] BEGIN TRACE_DIAGNOSTICS
[14/10/03 14:19:24:563 JST] 000000bc logwriter 3 [jcc][t4] 4DE0 2020202020202020 2020202020202020 ................
[14/10/03 14:19:24:563 JST] 000000b6 logwriter 3 [jcc][Thread:WebContainer : 3][SQLException@4fece456] java.sql.SQLException
[14/10/03 14:19:24:563 JST] 000000bc logwriter 3 [jcc][t4] 4DF0 2020202020202020 2020202020202020 ................
[14/10/03 14:19:24:563 JST] 000000b6 logwriter 3 [jcc][Thread:WebContainer : 3][SQLException@4fece456] SQL state = 58017
[14/10/03 14:19:24:563 JST] 000000bc logwriter 3 [jcc][t4] 4E00 0020202020202020 2020202020202020 . ................
[14/10/03 14:19:24:563 JST] 000000b6 logwriter 3 [jcc][Thread:WebContainer : 3][SQLException@4fece456] Error code = -4499
[14/10/03 14:19:24:563 JST] 000000bc logwriter 3 [jcc][t4] 4E10 2020202020003100 2020202020202020 .1. ................
[14/10/03 14:19:24:563 JST] 000000b6 logwriter 3 [jcc][Thread:WebContainer : 3][SQLException@4fece456] Message = [jcc][t4][20107][11277][3.65.97] DDM パラメーターの値がサポートされていません。 DDM パラメーターのコード・ポイントにサポートされない値があります: 0x2414。
[14/10/03 14:19:24:563 JST] 000000bc logwriter 3 [jcc][t4] 4E20 2020202020202020 2020202020202020 ................
[14/10/03 14:19:24:563 JST] 000000b6 logwriter 3 入力ホスト変数が、サーバーのサポートする範囲内にない可能性があります。 ERRORCODE=-4499, SQLSTATE=58017
[14/10/03 14:19:24:563 JST] 000000bc logwriter 3 [jcc][t4] 4E30 2020202020202020 2020202020202020 ................
[14/10/03 14:19:24:563 JST] 000000b6 logwriter 3 [jcc][Thread:WebContainer : 3][SQLException@4fece456] Stack trace follows
[14/10/03 14:19:24:563 JST] 000000bc logwriter 3 [jcc][t4] 4E40 2020202020202020 2020202020202020 ................
[14/10/03 14:19:24:563 JST] 000000b6 logwriter 3 com.ibm.db2.jcc.am.DisconnectNonTransientException: [jcc][t4][20107][11277][3.65.97] DDM パラメーターの値がサポートされていません。 DDM パラメーターのコード・ポイントにサポートされない値があります: 0x2414。
[14/10/03 14:19:24:563 JST] 000000bc logwriter 3 [jcc][t4] 4E50 2020202020202020 2020202020202020 ................
[14/10/03 14:19:24:563 JST] 000000b6 logwriter 3 入力ホスト変数が、サーバーのサポートする範囲内にない可能性があります。 ERRORCODE=-4499, SQLSTATE=58017
ロケールの設定により上記の文字列は異なりますが、 ERRORCODE, SQLSTATE そして code [11277] は変わりません。
以下はこの現象がおきたときの参考 db2diag.log の関連するエラー "Invalid SQL statement length" です。
- 2014-10-02-18.13.42.106000+540 E284129F828 LEVEL: Error
PID : 1360 TID : 312 PROC : db2syscs.exe
INSTANCE: DB2INST1 NODE : 000 DB : SAMPLEDB
APPHDL : 0-365 APPID:
AUTHID : DB2INST1 HOSTNAME:
EDUID : 312 EDUNAME: db2agentg (SAMPLEDB)
FUNCTION: DB2 UDB, DRDA Application Server, sqljsParseSqlSttGrpNOC, probe:419
MESSAGE : DIA5000C A DRDA AS token "RECOVERABLE" was detected. The diagnostic
data returned is (SRVDGN): "FUNCTION ID = 0050 , PROBE POINT = 0419 ,
TRACE POINT = 0015 , SUBCODE1 = FFFFFFFF804B0095, SUBCODE2 =
00000000000000BE, SUBCODE3 = 00000000000000BE, ERROR MSG = Parser:
Invalid SQL statement length".
2014-10-02-18.13.42.152000+540 I284959F676 LEVEL: Error
PID : 1360 TID : 312 PROC : db2syscs.exe
INSTANCE: DB2INST1 NODE : 000 DB : SAMPLEDB
APPHDL : 0-365 APPID:
AUTHID : DB2INST1 HOSTNAME:
EDUID : 312 EDUNAME: db2agentg (SAMPLEDB)
FUNCTION: DB2 UDB, DRDA Application Server, sqljsParseSqlSttGrpNOC, probe:15
MESSAGE : ZRC=0x804B0095=-2142568299=SQLJS_VALNSP "VALUE ERROR"
DATA #1 : DDM Object, PD_TYPE_DDM_OBJECT, 16 bytes
data length : 190
codepoint : 0x2414 ( SQLSTT )
length : 194 ( COMPLETE )
2014-10-02-18.13.42.184000+540 I285637F171 LEVEL: Error
PID:1360 TID:312 NODE:000 Title: **** DRDA ASCB ****
Dump File:D:\DB2PROFS\DB2INST1\1360.312.000.dump.bin
その WAS/JDBC アプリケーションから実行できない SQL は CLP からは問題なく実行できると考えられます。
また、この問題を起こす SQL を JDBC Type4 で直接 DB2 for AS/400 へ実行する小さな JDBC プログラムを作成することにより、直接接続した場合にはこの問題が生じないことが確認できます。
この事象の解決策は、DB2 Connect ゲートウェイを介さずに JDBC Type4 にて直接 DB2 for AS/400へアプリケーションが接続するようにすることです。
WAS の場合、DB2 Connect ゲートウェイの代わりに Type4 データソースへ DB2 for AS/400 のデータベース名、ホスト名、DRDA のポート番号の設定が必要です。
WAS と AS/400 間の TCP/IP 接続にファイアーウォールなどが影響を与えていないか確認してください。
これらの設定を使用した新規データソースを作成すれば WAS のテストコネクションオプションにて簡単に確認することが可能だと考えられます。
この新規データソースにて接続が確認できれば、この設定と同じように既存のアプリを設定することが有効な回避策となります。
この環境下でのライセンスに関しては、新たに DB2 Connect Personal Edition を購入する必要はありません。
DB2 Connect Unlimited Edition から WAS サーバへ db2jcc_license_cisuz.jar をコピーするだけです。
この場合、ライセンスファイル (db2jcc_license_cisuz.jar) を AS/400 へ接続するすべての JCC クライアントにコピーする必要があります。
注: この挙動は将来断り無く変更されることがあります。この Technote の内容が有効か否かは上記のメッセージを JCC トレースと db2diag.log で確認することにより可能です。
Related Information
[{"Product":{"code":"SSEPGG","label":"Db2 for Linux, UNIX and Windows"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Component":"Programming Interface - JCC","Platform":[{"code":"PF002","label":"AIX"},{"code":"PF010","label":"HP-UX"},{"code":"PF016","label":"Linux"},{"code":"PF027","label":"Solaris"},{"code":"PF033","label":"Windows"}],"Version":"9.7;10.1;10.5","Edition":"Advanced Enterprise Server;Advanced Workgroup Server;Enterprise Server;Workgroup Server","Line of Business":{"code":"LOB10","label":"Data and AI"}}]
Was this topic helpful?
Document Information
Modified date:
08 December 2022
UID
swg21691247