失敗
WebLogic Server で使用する JDK を JDK 5 Update 9 に変更すると、サーバインスタンス起動時に weblogic.management.ManagementException が発生してしまいます。
環境
このレポートは、以下の環境について記述したものです。
| JDK | JDK 5 Update 9 (JDK 5 Update 7 以降すべて) |
| AP サーバ | WebLogic Server 9.2 |
ログ
- ManagementException のスタックトレース
原因
JDK 5 Update 7 で QName の serialVersionUID (詳しくは 補足 を参照) が変更されました。 一方、WebLogic Server 9.2 に含まれているライブラリに存在する QName の serialVersionUID は、JDK 5 Update 6 以前の値のままです。 このため、互換性がないとみなされてしまい、例外が発生します。
解決策
この問題は、起動時に serialVersionUID の値を統一することで回避できます。 /common/bin/commEnv.sh にて、serialVersionUID のバージョンを書き換えてください。
(1) commEnv.sh の修正
WebLogic Server 全体の環境変数を定義する commEnv.sh (Windows の場合は commEnv.bat) に、serialVersionUID の書き換えを追加します。
# OName の serialVersionUID を 1.0 に統一 JAVA_OPTIONS="$JAVA_OPTIONS -Dcom.sun.xml.namespace.QName.useCompatibleSerialVersionUID=1.0"
補足
■ serialVersionUID とは?
直列化されたクラスが、送り側と受け側で同じクラスであるかどうか判別するための値です。 JDK の serialver コマンドを使用することにより、クラス名、インタフェースクラス名、メソッド、フィールドをハッシュした 64 ビット値として取得できます。
【定義例】
private static final long serialVersionUID = 3021367093337410941L;
