Java 7u55/ 6u75に互換性を損なう無断変更があった事が判明

Java SE 7 Update 55で実施された改修によるWebOTXへの影響について

オラクル社が2014/04/15よりリリースを開始したJava SE Development Kit 7, Update 55 (以降、JDK
7u55と略す)において、以下で説明する旧JDK 7
Updateバージョンとの非互換を原因としてWebOTXのインストールやドメイン作成に失敗する、あるいは既に適用されたJDK
7のアップデートバージョンをJDK 7u55に更新するとWebOTXが起動しないなどの影響が確認されました。

Java SE 6 Update 75(Java SE Advanced契約ユーザ向け)で実施された改修によるWebOTXへの影響について

オラクル社がJava SE Advanced契約ユーザ向けに2014/04/15よりリリースを開始したJava SE Development Kit 6, Update 75 (以降、JDK 6u75と略す)において、旧JDK 6 Updateバージョンとの非互換を原因としてWebOTXのインストールやドメイン作成に失敗する、あるいは既に適用されたJDK 6のアップデートバージョンをJDK 6u75に更新するとWebOTXが起動しないなどの影響が確認されました。

詳細情報

JDKに含まれるCORBA機能は、既定ではオラクル社による実装が使用されますが、ベンダ独自実装に差し替える仕組みも備えています。WebOTXで
は、その仕組みを使ってNEC固有のCORBA製品「Object
Broker」を組み込んでいます。それを実現するために、JDKの仕様にしたがって、シングルトンORB実装クラス名を指定するためのシステムプロパ
ティ「org.omg.CORBA.ORBSingletonClass」に対してNEC独自実装のクラスを設定しています。この独自シングルトンORB
実装クラスのロードはorg.omg.CORBA.ORBクラスのinit()メソッド内で行われます。
JDK 7u51以前では、シングルトンORB実装クラスのロードはスレッドに設定されたコンテキストクラスローダによって行なわれていました。



しかし、JDK 7u55 ではorg.omg.CORBA.ORBクラスのinit()メソッド(*)の動作が、シングルトンORB実装クラスをロードするクラスローダとしてシステムクラスローダを使用するように変更されました。

WebOTXのクラスローダは階層構造になっており、シングルトンORB実装クラスを含めたWebOTXに含まれるクラスはシステムクラスローダでロード
されません(スレッドに設定されたコンテキストクラスローダでロードできる設計になっています)。よって、JDKの仕様変更が影響して、ドメイン起動中に
呼び出されるorg.omg.CORBA.ORBクラスのinit()メソッドのシングルトンORB実装クラスのロードで
java.lang.ClassNotFoundException例外が発生し、ドメイン起動に失敗します。

(*) クラスローダが変更されたのは引数なしのinit()メソッドのみです。init(Applet, Properties)、およびinit(String[], Properties) は変更されていません。

追加情報

また本件はリリースノートの修正不具合一覧にも記載されておらず、意図が不明瞭な互換性を損なう修正であるとの判断で、現在オラクル社に不具合の疑いも含めて修正の真意を問い合わせ中です。

WebOTX製品部門としては、オラクル社の回答を元に正式な対応を行なう予定です。方針が決まりましたら、再度このページでお知らせします。

これはひどいよ Oracle さん ・ω・

おすすめ

2件のフィードバック

  1. ufoprincess より:

    これはひどい、かといって通常はセキュリティ上の問題からアップデートしない訳にもいかないしOracleもいい加減だなあ

  2. ufoprincess より:

    これはひどい、かといって通常はセキュリティ上の問題からアップデートしない訳にもいかないしOracleもいい加減だなあ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です