db2 データベースに接続する websphere コンソールにアプリケーションをデプロイしています。インストールされる jdk は IBM JDK です。オンライン画面から特定のケースを実行すると、エラーが表示されます:
UnsupportedEncodingException . ERRCODE = -4220
ログを確認すると、以下のエラーが根本的な原因のようです。
Caused by: java.io.UnsupportedEncodingException: Cp037
at sun.io.Converters.getConverterClass(Converters.java:319)
at sun.io.Converters.newConverter(Converters.java:373)
at sun.io.ByteToCharConverter.getConverter(ByteToCharConverter.java:98)
at com.ibm.db2.jcc.am.r.<init>(r.java:10)
分析: IBM db2 ドライバーのように見えます -db2jcc4.jar
基礎となる JDK の特定の文字エンコード/デコード jar ( charsets.jarだと思います) を呼び出して、この jar によって消費され、文字列形式にデコードされるバッファーのストリームを渡します。
しかし、上記のログが示すように、呼び出されるライブラリは oracle jdk. ByteToCharConverter
クラスは oracle jdk ライブラリの rt.jar にあります。IBM の websphere サーバーのインストールに組み込まれている IBM jdk を使用しています。また、OS 上の JAVA_HOME パスは IBM JDK のみに設定され、websphere コンソールでは、環境変数の下で、JAVA_HOME は websphere サーバー内の IBM JDK のルート パスとして設定されます。
エンコーディングがどのように行われるかを伝えるために、Websphere コンソールで特定のパラメーターを設定する必要がありますか? これをどのように乗り越えるかわかりません。どんな助けでも大歓迎です。
編集:
db2jcc バージョン
IBM Data Server Driver for JDBC and SQLJ 4.18.60
Java -バージョン
java version "1.8.0_281"
Java(TM) SE Runtime Environment (build 8.0.6.26 - pxa6480sr6fp26-20210216_01(SR6 FP26))
IBM J9 VM (build 2.9, JRE 1.8.0 Linux amd64-64-Bit Compressed References 20210216_465732 (JIT enabled, AOT enabled)
OpenJ9 - e5f4f96
OMR - 999051a
IBM - 358762e)
JCL - 20210108_01 based on Oracle jdk8u281-b09