ページの先頭です。
ここから本文です。

お知らせ

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

概要

2014/07/15に本事象が解消された JDK 7u65 がリリースされました。 WebOTX開発部門での評価の結果、正しく動作することを確認できました。 WebOTXのインストールやドメイン作成、あるいはJDK 更新時には 7u65以降を利用してください。

オラクル社が 2014/04/15 よりリリースを開始した Java SE Development Kit 7, Update 55 (以下、JDK 7u55 と略す) および Update 60 (同じく、JDK 7u60 と略す) において、 以下で説明する旧 JDK 7 Update バージョンとの非互換を原因として WebOTX が次の影響を受けることが確認されました。

WebOTXが受ける影響

  • 対象の JDK において WebOTX の新規インストールに失敗する。
  • 対象の JDK においてドメインの作成に失敗する。
  • インストール済みの JDK を対象の JDK に変更すると、ドメインの起動に失敗する。

なお、WebOTX V9 に関する この問題の情報は以下をご参照ください。

対象となる JDK の バージョン

Windows / Linux / Solaris

  • Oracle JDK 7u55
  • Oracle JDK 7u60

HP-UX

  • 影響を受ける JDK はありません。

影響のある製品

  • WebOTX Enterprise Service Bus V8.5
  • WebOTX Application Server V8.42.02(*)

(*: バージョンの確認方法)
WebOTX運用管理コマンド(otxadmin)を用いてバージョン表示を実行します。

otxadmin> version
バージョン = WebOTX 8.42.02.** (build xxxxxx) ["**"はパッチ適用レベルに応じた数字が出力されます]


エラー内容

(ケース1) JDK 7u51以前を適用したWebOTXが構築済みの環境に対して、JDKを 7u55 あるいは 7u60 にバージョンアップする。

本事象が発生した場合、webotx_agent.log に以下のエラーメッセージが出力され、ドメイン起動に失敗します。

OTX01205150: アプリケーションサーバ [domain1:server] の起動に失敗しました : com.sun.enterprise.module.ResolveError: Failed to start Bundle Id [<バンドルID(*)>] State [RESOLVED] [com.nec.webotx.as.main.common.webotx-naming(WebOTX Naming):<WebOTX Namingモジュールのバージョン番号(*)>] [main]

(*) <バンドルID>はインストール環境、<WebOTX Namingモジュールのバージョン番号>はWebOTXのバージョンにより可変です。

(ケース2) JDK 7u55 あるいは 7u60 がインストールされた環境へ新規にWebOTXをインストールする。

Windowsの場合、以下のメッセージダイアログが出力されます。

インストール(ファイルコピー等)は正常に完了しましたが、ドメインの作成に失敗しました。
<WebOTXインストールディレクトリ>\ant_setup.logを確認し、エラー原因を確認してください。
エラー原因を解消後、<WebOTXインストールディレクトリ>\ant_setup.batを実行してドメインを再作成してください。

Unixの場合、コンソールに以下のエラーメッセージが出力されます。

Making domain is failed.
The result of 'ant' should look at '/opt/WebOTX/ant_setup.log'.


Installation is canceled.

いずれの場合もインストール中に起動されるユーザドメインのwebotx_agent.logに、ケース1のログメッセージが出力されています。


回避策

原則は「概要」で述べたとおりこの問題が解消された JDK 7u65以降の適用を強く推奨します。何らかの理由でJDK 7u55 あるいは 7u60を適用しなけれなばらない場合のエラー回避手順について説明します。

状況に応じて、下記のエラー回避手順を実施してください。

WebOTX Application Server Foundation/Standard/Enterpriseを使用していて、 Java EE プロセスグループを使用する場合は、上記手順に加えて次のエラー回避手順を実施してください。

なお、WebOTXが使用するJDKの指定方法は「参考」を参照してください。

新規にWebOTXをインストールする場合

(手順1) 2つのJDK 7をインストール

WebOTXインストール対象のコンピュータにJDK 7のUpdate 51以前とUpdate 55 あるいは Update 60をインストールしておきます。

(手順2) WebOTXのインストール

WebOTX製品のインストール中に適用するJDKのパスを指定する画面が表示されます。ここで本事象の発生しないJDK 7u51以前のものを指定します。

(手順3) WebOTXに適用したJDKをUpdate 55 あるいは Update 60に差し替え

インストール完了後に「既存環境の JDK を JDK 7u55 あるいは 7u60 にアップデートする場合」を行います。

既存環境の JDK を JDK 7u55 あるいは 7u60 にアップデートする場合

現在、WebOTXにはJDK 7u51以前が適用されています。その環境に対してJDK 7をUpdate 55 あるいは Update 60にバージョンアップするためには、まずバージョンアップする前に以下の手順を実施してください。

(手順1) ドメインに環境設定CLASSPATHを設定

ドメインが停止している状態で、管理ドメインを除く全てのドメインに対して、以下の手順を実施してください。

  1. ${INSTANCE_ROOT}/config/domain.xmlをエディタで開いてください。
  2. java-configタグのsystem-classpath属性に以下の定義を追加してください。

    Windows

    追加する定義:
    ${com.nec.webotx.installRoot}/ObjectBroker/lib/ospiorb50.jar
    ${path.separator}${com.nec.webotx.installRoot}/ObjectBroker/lib/jsocks.jar

    (例)
    <java-config debug-options="..." system-classpath="${com.nec.webotx.installRoot}/ObjectBroker/lib/ospiorb50.jar
    ${path.separator}${com.nec.webotx.installRoot}/ObjectBroker/lib/jsocks.jar
    " ...>

    実際には改行を入れずに1行で記述してください。

    UNIX

    追加する定義:
    /opt/ObjectSpinner/lib/ospiorb50.jar${path.separator}/opt/
    ObjectSpinner/lib/jsocks.jar

    (例)
    <java-config debug-options="..." system-classpath="/opt/
    ObjectSpinner/lib/ospiorb50.jar${path.separator}/opt/
    ObjectSpinner/lib/jsocks.jar
    " ...>

    実際には改行を入れずに1行で記述してください。

(手順2) WebOTXに適用したJDKをUpdate 55 あるいは Update 60 に差し替え

上記の手順完了後にWebOTXが使用するJDK を JDK 7u55 あるいは 7u60に変更してください。

既にJDK 7u55 あるいは 7u60 を使用した環境で、ドメインを作成する場合

(手順1) WebOTX に適用した JDK を Update 51 以前に差し替え

現在、WebOTX に JDK 7 の Update 55 か Update 60 が適用されていない場合この手順は不要です。

(手順2) ドメインの作成

マニュアルの手順に従い、任意の名前のドメインを作成します。このとき、WebOTX に JDK 7 の Update 55 か Update 60 が適用されていると、ドメインの作成に失敗します。

(手順3) WebOTX に適用した JDK を Update 55 あるいは Update 60に差し替え

ドメインの作成が完了したら、「既存環境の JDK を JDK 7u55 あるいは 7u60 にアップデートする場合」を行います。

既にJDK 7u55 あるいは 7u60 を使用し、本事象が発生している場合

(手順1) WebOTXのプロセスを全て停止

JDK 7u55 あるいは 7u60 を使ってドメインを起動するとWebOTX機能の一部が異常終了すると共に、一部のWebOTXプロセスが残存する可能性があります。そこで、本回避策を実施する前に全ユーザドメインに対して以下のコマンドを実行して、不正な状態のプロセスが残存していない状態にします。

otxadmin> stop-domain --force -wait_timeout 0 <ユーザドメイン名>
(手順2) プロセス停止の確認

コマンド実施後はマニュアルの以下の箇所をご確認いただき、WebOTXのプロセスがすべて停止していることを確認してください。

[リファレンス集 ドメイン構成・環境移行編 > 1.2. 動作プロセス ]

ユーザドメインが停止していることが確認できたら、以下の手順に従って、管理ドメインを除く全てのドメインに対して設定ファイル(domain.xml)の修正を行ってください。

「既存環境の JDK を JDK 7u55 あるいは 7u60 にアップデートする場合」の手順を実施してください。

Foundation/Standard/Enterpriseエディションで JDK 7u55 あるいは 7u60 を使用する場合

Foundation/Standard/EnterpriseエディションのApplication Serverをご利用の場合は、追加で下記の設定が必要になります。 (この作業はExpressエディションでは実施不要です。)

(手順1) 全てのプロセスグループに環境設定CLASSPATHを設定

既存および新規作成のJava EEプロセスグループそれぞれについて、環境変数CLASSPATHを設定します。次のコマンドで設定します。

otxadmin> add-pg-setenv --apgroup <アプリケーショングループ名> --setenv CLASSPATH
--value <ObjectBrokerのJarファイルパス> <プロセスグループ名>

実際には改行を入れずに1行で記述してください。

<ObjectBrokerのJarファイルパス>の部分はWebOTXのバージョンおよびOSによって以下の表のように変わります。

Windows Unix
<WebOTXインストールディレクトリ>\ObjectBroker\lib\ospiorb50.jar;
<WebOTXインストールディレクトリ>\ObjectBroker\lib\jsocks.jar
/opt/ObjectSpinner/lib/ospiorb50.jar
:/opt/ObjectSpinner/lib/jsocks.jar

実際には改行を入れずに1行で記述してください。

なお、Java EEプロセスグループにすでに環境変数CLASSPATHが設定されている場合、既存の値と<ObjectBrokerのJarファイルパス>の値をOSごとのクラスパス区切り文字で結合して指定してください。


本事象が発生する原因

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が使用するJDKの変更方法はマニュアルの以下を参照してください。

[ドメイン構築・基本設定ガイド > 2. 環境設定 > 2.2. JDKの設定 > 2.2.1. JDKの更新・変更]

製品名カテゴリ

WebOTX
WebOTX Application Server
WebOTX Service Integration

  • コンテンツID: 3010100922
  • 公開日: 2014年06月06日
  • 最終更新日:2014年09月01日
ここからページ共通メニューです。 ページ共通メニューを読み飛ばす。