JavaWebアプリケーションからOracleのストアドプロシージャにリクエストを送信しています。このストアドプロシージャには、TimestampINパラメータがあります。
情報の移動方法は次のようなものです。
javaWebApp-}Webサービスクライアント-}ws-}ストアドプロシージャ
そして、タイムスタンプパラメータをフォーマットされた文字列としてWebサービスクライアントからwsに送信します。
テスト環境では、次の送信で機能します。
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy hh:mm:ss a");
input.setTimestampField(dateFormat.format(new Date()));
ご覧のとおり、フォーマットされた文字列が送信されます。しかし、実稼働環境では、例外が発生します
ORA-01830: date format picture ends before converting entire input string.
これは、おそらく1つのDBから別のDBへの構成の違いが原因で、フォーマットが同じでないことに関連しています。テスト環境は本番サイトのレプリカである必要があることはわかっていますが、適切に設定することは私の手にはありません。また、データベースの設定方法に関係なく、Timestamp-as-a-formatted-stringフィールドを送信する必要があります。何か案は?前もって感謝します。
****編集****:特定の構成にもかかわらず正しく機能させる方法を見つけました。これは、適切なOracle命令を使用してWebサービスで呼び出し命令を設定するのと同じくらい簡単です。つまり、Oracleストアドプロシージャの呼び出しは
"call PACKAGE.MYPROCEDURE(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"
に
"call PACKAGE.MYPROCEDURE(?,?,?,?,?,?,TO_TIMESTAMP(?, 'DD-MM-YYYY HH24:MI:SS'),?,?,?,?,?,?,?,?,?,?,?)"
プロシージャの呼び出しで設定した形式は、元の質問に記載されているSimpleDateFormatを使用してWebアプリから送信された形式と一致しますが、わずかに変更されています。
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
助けとアイデアをありがとうございました。