診断ガイド

     前  次    目次     
コンテンツの開始位置

Oracle JRockit Time Zone Updater

Oracle JRockit Time Zone Updater (TZUpdater) を使用すると、米国の 2005 年エネルギー政策法 (U.S. Energy Policy Act of 2005) の成立に伴う 2007 年の夏時間の変更 (US2007DST) に対応するために、インストール済みの JDK/JRE イメージを最新のタイム ゾーン データで更新することができます。

タイム ゾーン データの更新と、製品の他の改良点 (セキュリティに関する修正など) の両方が提供されるため、最新の Oracle JRockit JDK リリースを優先的に使用することをお勧めします。最新の JDK/JRE 更新リリースを使用できない場合は、他のシステム コンフィグレーションと依存関係は変更しないまま、このツールでタイム ゾーン データを更新することもできます。

この節の内容は以下のとおりです。

 


TZUpdater のダウンロード

TZUpdater は以下のサイトからダウンロードしてください。

http://commerce.bea.com/products/weblogicjrockit/tzupdater/accept_terms_tzupdater.jsp

 


TZUpdater の概要

特定の Java インストールをアップグレードするには、そのインストールの Java 実行可能ファイルの絶対パスを指定する必要があります。java -jar... だけを指定して、または tzupdater.jar ファイルをダブルクリックして tzupdater.jar を実行すると、ほとんどのシステムでは Sun の Java が呼び出されるため、エラー メッセージが表示されます。「TZUpdater のデフォルトの使用方法の例」で、TZUpdater の一般的な使い方について説明しています。

1 回の実行で 1 つの JDK/JRE イメージが変更されます。複数の JDK/JRE インスタンスを管理する場合は、「システム全体での使用」を参照してください。

TZUpdater を実行する前に、対象となる特定の JDK/JRE のインスタンスが動作中の場合は停止する必要があります。

TZUpdater は対象の JVM を変更および更新するため、ツールをコマンドライン アプリケーションとして実行することが重要です。「コマンドライン オプションの説明」を参照してください。

 


TZUpdater を実行するためのシステム要件

TZUpdater は、サポート対象のすべてのプラットフォームで Oracle の JDK/JRE リリース 1.4 以降をサポートしています。

 


TZUpdater の使用

コマンドライン インタフェースは次のとおりです。

JAVA_HOME/bin/java -jar tzupdater.jar options

コマンドライン オプションの説明

コマンドライン オプションを指定しない場合は、使用方法に関するメッセージが表示されます。タイム ゾーン データの更新を実行するには、-u または -f オプションを指定する必要があります。使用できるすべてのコマンドライン オプションのリストについては、表 22-1 を参照してください。

表 22-1 使用できるオプションのリスト
コマンド
オプション名
説明
-h
help
使用方法を stdout に出力して終了する。指定されている場合、他のオプションは無視される。
-V
version
ツールのバージョン番号と、JRE および jar ファイルに組み込まれているアーカイブの tzdata のバージョン番号を表示して終了する。
-u
更新
タイム ゾーン データを更新する。このオプションを -h-t、または -V オプションと一緒に指定すると、コマンドは使用方法を stdout に表示して終了する。
-f
強制
tzdata アーカイブのバージョンが JRE の tzdata のバージョンよりも古い場合でも、tzdata を強制的に更新する。このオプションの場合、更新を実行するために -u オプションを指定する必要はない。
-v
冗長
詳細なメッセージを stdout に表示する。
-bc
下位互換性
JDK 1.1 の 3 文字のタイム ゾーン ID との下位互換性を保つ。JDK 1.1 のタイム ゾーン ID と衝突するタイム ゾーン ID は、インストールされるタイム ゾーン データから削除される。詳細については、「確認済みの問題」を参照。このオプションは、-u-f、または -t オプションと一緒に指定する必要がある。
-t
テスト
検証テストのみを実行して終了する。指定されている場合、-f オプションは無視される。-bc オプションが指定されている場合は、JDK 1.1 のタイム ゾーン ID と衝突するタイム ゾーン ID に関するテストは無視される。

TZUpdater のデフォルトの使用方法の例

以下に示すのは、TZUpdater を使用して、Java インストール (例 : /opt/bea/jrockit90_150_06) のタイム ゾーン データをアップグレードするデフォルトの方法の例です。

  1. JRE の現在のバージョンのタイム ゾーン データをテストします。
  2. > /opt/bea/jrockit90_150_06/bin/java -jar tzupdater.jar -V

    tzupdater version: 1.0.0-b03
    JRE time zone data version: tzdata2005n
    Embedded time zone data version: tzdata2007a

  3. タイム ゾーン データを更新します。
  4. > /opt/bea/jrockit90_150_06/bin/java -jar tzupdater.jar -u

  5. バージョンが更新されたことを確認します。
  6. > /opt/bea/jrockit90_150_06/bin/java -jar tzupdater.jar -V

    tzupdater version: 1.0.0-b03
    JRE time zone data version: tzdata2007a
    Embedded time zone data version: tzdata2007a

  7. 組み込みテストを実行して、新しいタイム ゾーン データをテストします。なにも出力されない場合、テストは成功したことになります。
  8. > /opt/bea/jrockit90_150_06/bin/java -jar tzupdater.jar -t

 


エラー処理

ディスク領域の不足などの予期しないエラーが発生した場合、TZUpdater は元の状態を復元しようとします。そのようなエラーでは TzRuntimeException が生成されます。

 


システム全体での使用

JDK/JRE に対して TZUpdater を実行する前に、対象の JDK/JRE のインスタンスが動作中の場合は停止します。

システムには複数の JDK/JRE イメージが共存している可能性があります。その場合は、各 JDK/JRE イメージに対して個別にツールを適用する必要があります。Microsoft Windows では、デスクトップ検索ユーティリティを使用して各イメージを検索できます。UNIX 派生システムで JDK/JRE のインストールされている複数のコピーを見つけるには、次の手順に従います。

  1. UNIX 派生システムで、ローカルにインストールされている JDK/JRE インスタンスを検索します。
  2. /usr/bin/find DIRPATH -fstype nfs -prune -o -fstype autofs -prune -o -name java -print -exec {} -version ;

    DIRPATH は、インストールされている Java SE インスタンスを検索するディレクトリ パス (例 : /usr) です。

  3. ローカルにインストールされているインスタンスの更新を自動化します。
  4. /usr/bin/find DIRPATH -fstype nfs -prune -o -fstype autofs -prune -o -name java -print -exec {} -jar /ABSOLUTEPATH/tzupdater.jar -u ;

    DIRPATH は、インストールされている Java SE インスタンスを検索するディレクトリ パス (例 : /usr) です。ABSOLUTEPATH を、tzupdater.jar を展開するディレクトリの絶対パス名で置き換えます。

 


TZUpdater のバージョン確認

どのバージョンの TZUpdater を使用しているのかを確認するには、コマンド tzinfo を使用します。JRockit JDK インストール ディレクトリの bin\ ディレクトリからコマンドを入力します。完全なバージョン情報が返されます。たとえば、下記のように入力したとします。

\jrockits\R27.3.0_R27.3.0-45_1.5.0\bin\tzinfo
システムの応答は、次のようになります。
java version "1.5.0_10"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_10-b03)
BEA JRockit(R) (build R27.3.0-45-79733-1.5.0_10-20070330-1521-windows-ia32,
compiled mode)
Time zone data version: tzdata2006k

 


TZUpdater の変更の削除

JDK/JRE に対して TZUpdater を実行する前に、対象の JDK/JRE のインスタンスが動作中の場合は停止します。

現在の TZUpdater による変更は、次の手順に従って、手動でのみ削除できます。

  1. 変更した JAVAHOME/jre/lib ディレクトリの下にある zi ディレクトリを見つけます。これは新しい方のデータです。
  2. 同じ JAVAHOME/jre/lib ディレクトリ内の zi.tzdata* ディレクトリを見つけます。これは置き換えられた古い方のデータです。
  3. java -jar tzupdater.jar -V コマンドから、現在インストールされているタイム ゾーン データのバージョンを取得します。
  4. 現在の zi ディレクトリの名前を、「zi.tzdata2007a」など、または、手順 3 のバージョン コマンドで調べたバージョン名に変更します。ここで変更する名前は、古いデータ ディレクトリと衝突しないようにしてください。
  5. 古いデータ ディレクトリの名前を zi に変更します。
  6. java -jar tzupdater.jar -V を実行して、現在アクティブになっているタイム ゾーン データが変更されたことを確認します。
  7. 更新した JDK/JRE インスタンスでアプリケーションを再起動します。

 


確認済みの問題

TimeZone API および実装の制約により、ツールにはいくつかの制限事項があります。

表 22-2 TZUpdater で確認済みの問題
問題
確認済みの問題の説明
タイム ゾーンの表示名
このツールでは、まったく新しいタイム ゾーンや、表示名に関連する変更があったタイム ゾーンの表示名が更新されない。たとえば、Europe/Podgorica は、Serbia/Montenegro の分割に伴う、tzdata2006n の新しいタイム ゾーン ID である。もう 1 つの例として、America/Indiana/Knox は 2006 年 4 月 2 日に東部標準時から中央標準時に変更されたが、その変更は tzdata2006a から反映されている。America/Indiana/Knox のタイム ゾーンの表示名は Java バージョン 5.0 update 8 で変更された。
JDK 1.1 タイム ゾーン ID の互換性
tzdata2005r では、Olson タイム ゾーン データベースに DST ルールのない (つまり、標準時間のみの) EST、MST、および HST が追加された。これらの ID は JDK 1.1 の同じ ID と衝突する。Olson タイム ゾーン ID の完全なセットではなく、JDK 1.1 と互換性のあるタイム ゾーン ID が必要な場合は、これらの互換性のない ID を削除する必要がある。Sun のバグ 6466476 を参照。
TimeZone.getAvailableIds(int) および TimeZone.getRawOffset() の制限と JCK
これらの TimeZone メソッドでは、タイム ゾーンの GMT オフセットは変更されないという API の設計上の前提に基づいてタイム スタンプを取得しない。そのため、戻り値の一貫性を常に保つことができない。JCK のテスト ケース TimeZone2014 では、これらのメソッドの戻り値の一貫性が保たれる。このテスト ケースは、GMT オフセットが将来変更されるタイム ゾーンがある場合に限り、失敗する。
回避策の修正が 5.0 update 4 および 6 Standard Edition に追加された。この修正には、タイム ゾーン データ ファイルの形式の変更も含まれている。したがって、いずれかのタイム ゾーンで将来 GMT オフセットの変更がある場合は、2 つのバージョンのタイム ゾーン データ アーカイブをツールに用意する必要がある。
詳細については、Sun のバグ 5055567 を参照。

注意 : 実際の GMT オフセットの変更が発生するまでは、5055567 の修正がない場合、JCK テスト ケースは失敗する。

ソフトウェア パッケージ管理エラー
現在の TZUpdater は、ネイティブのオペレーティング環境のソフトウェア パッケージ管理インフラストラクチャの外側で動作する。TZUpdater を使用して新しいタイム ゾーン データ ファイルをインストールすると、Solaris pkgchk などのコマンドでは、TZUpdater によって変更されたファイルに関するエラーが報告される。これらのファイルは jre/lib/zi ディレクトリにある。


  ページの先頭       前  次