Hitachi

Cosminexus V11 アプリケーションサーバ 機能解説 保守/移行編


10.3.3 アプリケーションサーバ 11-00,11-10,11-20,11-30,11-40,11-50,または11-60から,11-70までの仕様変更

この項にある表で,アプリケーションサーバ 11-00,11-10,11-20,11-30,11-40,11-50,または11-60から,11-70までの仕様変更の項目を示します。

アプリケーションサーバ 11-00,11-10,11-20,11-30,11-40,11-50,または11-60から,11-70に移行する場合,この項にある表の「移行前のアプリケーションサーバのバージョン」列で該当する列を確認してください。「○」のときは仕様変更があるため,「仕様変更の項目」列に記載の参照先を確認してください。「−」のときは仕様変更がない,または移行前のバージョンにその仕様がないため,参照先の確認は不要です。

〈この項の構成〉

(1) アプリケーションサーバのJPA機能

アプリケーションサーバ 11-10以降,アプリケーションサーバのJPA機能はデフォルトで有効になります。11-00から移行した場合でも同様です。

11-00から移行した場合に,11-00のJ2EEサーバでJPA2.1を利用していたアプリケーションが,メッセージKDJE56515-Eを出力して開始に失敗するときは,アプリケーションサーバのJPA機能を無効にしてください。アプリケーションサーバのJPA機能を無効にするには,ユーザプロパティファイルに次のプロパティを設定してください。

ejbserver.jpa.disabled=true
互換性を重視したシステムへ移行する場合に必要な作業

作業はありません。

推奨機能を使用したシステムへ移行する場合に必要な作業

作業はありません。

影響を受けるもの

ありません。

(2) アプリケーションサーバのJPA機能のCDI Managed Bean対応

11-20以降では,CDI Managed Bean(それに関連づくインターセプタ含む)からアプリケーションサーバのJPA機能の使用をサポートします。そのため,CDI Managed Beanで@PersistenceContextおよび@PersistenceUnitが有効になり,アノテーションによってコンテナ管理のEntityManagerとEntityManagerFactoryがインジェクトされます。11-10以前から移行した場合でも同様です。

CDI Managed Beanで@PersistenceContextおよび@PersistenceUnitを無効にしたい場合は,ユーザプロパティファイルに次のプロパティを設定してください。

ejbserver.jpa.cdiEnabled=false
互換性を重視したシステムへ移行する場合に必要な作業

作業はありません。

推奨機能を使用したシステムへ移行する場合に必要な作業

作業はありません。

影響を受けるもの

ありません。

(3) Webコンテナのwelcomeファイル転送方式

11-20以降では,Webコンテナのwelcomeファイル転送方式がリダイレクト方式からフォワード方式に変更になります。このため,welcomeファイルをリダイレクトで処理することを期待していたアプリケーションを11-10以前から移行する場合,次の動作が異なります。

互換性を重視したシステムへ移行する場合に必要な作業

V9互換モードでは,リダイレクト方式から変更がないため作業はありません。

推奨機能を使用したシステムへ移行する場合に必要な作業

welcomeファイル内で相対パスを指定していて,リクエストURLからの相対パスとは異なる位置を期待している場合,指定したパスの変更が必要です。

影響を受けるもの

welcomeファイルから他のページへ遷移する場合に,期待したページへ遷移できない場合があります。

(4) リダイレクタ機能

11-20以降では,リダイレクタ機能を使用するためにHTTP Serverを起動する際は,環境変数を設定する必要があります。

互換性を重視したシステムへ移行する場合に必要な作業

リダイレクタ機能を使用するためにHTTP Serverを起動する際は,次の環境変数を設定する必要があります。

Linuxの場合

LD_LIBRARY_PATH=/opt/Cosminexus/common/lib

Windowsの場合

PATH=<Application Serverのインストールディレクトリ>\common\lib

推奨機能を使用したシステムへ移行する場合に必要な作業

作業はありません。

影響を受けるもの

ありません。

(5) リソース枯渇監視機能

11-40以降,リソース枯渇監視機能のメモリ枯渇監視情報のRate2のアラート出力は,デフォルトで無効になります。11-30以前から移行した場合でも同様です。

リソース枯渇監視機能のメモリ枯渇監視情報のRate2のアラート出力を有効にしたい場合は,ユーザプロパティファイルに次のプロパティを設定してください。

ejbserver.watch.memory.rate2alert.enabled=true
互換性を重視したシステムへ移行する場合に必要な作業

作業はありません。

推奨機能を使用したシステムへ移行する場合に必要な作業

作業はありません。

影響を受けるもの

ありません。

(6) sun.nio.cs.mapシステムプロパティの削除

JDK17以降の場合,sun.nio.cs.mapシステムプロパティを使用できません。そのため,エンコーディング名shift_jis,csshiftjis,ms_kanji,x-sjisをMS932の別名として実行させることができません。この変更によって文字化けが発生する場合は,アプリケーションを改修してください。

互換性を重視したシステムへ移行する場合に必要な作業

作業はありません。

推奨機能を使用したシステムへ移行する場合に必要な作業

作業はありません。

影響を受けるもの

ありません。

(7) javacコマンドのsource/target/releaseオプションに指定できる値

JDK17以降の場合,javacコマンドのsourceオプション,targetオプションおよびreleaseオプションに「6」を指定することはできません。

互換性を重視したシステムへ移行する場合に必要な作業

作業はありません。

推奨機能を使用したシステムへ移行する場合に必要な作業

作業はありません。

影響を受けるもの

ありません。

(8) Java SEのバージョン

アプリケーションサーバで使用されているJava SE 17(11-40以降)およびJava SE 21(11-70以降)は,Java SEの旧バージョンと,一部の機能に互換性がありません。詳細は,Java SEのドキュメントを参照してください。

互換性を重視したシステムへ移行する場合に必要な作業

作業はありません。

推奨機能を使用したシステムへ移行する場合に必要な作業

作業はありません。

影響を受けるもの

ありません。

(9) クラスファイルバージョンの変更

JDK17のクラスファイルバージョンは「61.0」です。

また,このクラスファイルバージョンの変更に伴い,クラスファイルフォーマットも変更されています。

互換性を重視したシステムへ移行する場合に必要な作業

クラスファイルの解析などを実施するプログラムやライブラリを使用している場合は,実装の変更やライブラリの更新などが必要となる場合があります。

推奨機能を使用したシステムへ移行する場合に必要な作業

互換性を重視したシステムへ移行する場合に必要な作業と同じです。

影響を受けるもの

ありません。

(10) JDKのバージョンによる明示管理ヒープ機能の使用可否

アプリケーションサーバに同梱されているJDK17(11-40以降)およびJDK21(11-70以降)では,明示管理ヒープ機能は非サポートです。明示管理ヒープ機能は,SerialGCでのGC停止時間の長期化を防ぐために使用します。11-40以降ではアプリケーションサーバでサポートしているG1GC,またはZGCを使用することでGC停止時間の長期化を防ぐことができます。継続して明示管理ヒープ機能をご使用になる場合は,JDK11をご使用ください。

JDK17またはJDK21の使用時にGC停止時間の長期化を防ぐときは,G1GCまたはZGCを使用してください。どのGCを選択するかによって,スループットや停止時間など,アプリケーションに与える影響が異なります。それぞれのGCの特徴を考慮して,アプリケーションの要件に合うGCを選択してください。それぞれのGCの特徴については,マニュアル「アプリケーションサーバ システム設計ガイド」の「7.1 GCとJavaVMのメモリ管理の概要」を参照してください。

明示管理ヒープ機能の使用状況については,-XX:[+|-]HitachiUseExplicitMemoryオプションの指定有無をご確認ください。詳細は,マニュアル「アプリケーションサーバ 機能解説 拡張編」の「7.13.1 明示管理ヒープ機能を利用するための共通の設定(JavaVMオプションの設定)」を参照してください。

これまでに明示管理ヒープ機能を使用していて,これからJDK17またはJDK21を使用する場合,次の対応をしてください。

互換性を重視したシステムへ移行する場合に必要な作業

作業はありません。

推奨機能を使用したシステムへ移行する場合に必要な作業

作業はありません。

影響を受けるもの

ありません。

(11) JSPから生成されたサーブレット用コンパイラのバージョン

JSPファイルをコンパイルする過程で,中間ファイルとしてサーブレットのJavaソースを生成します。生成されたサーブレットのJavaソースはJavaコンパイラによって,最終的にclassファイルを生成します。このとき使用されるJavaコンパイラのJava言語仕様のバージョンは,製品のバージョンによって異なります。J2EEサーバでは,インストールされているjavacコンパイラのデフォルトバージョンのJava言語仕様に従ってJSPから生成されたサーブレットのソースファイルをコンパイルします。

コンパイルするJava言語仕様のバージョンを次の表に示します。

表10‒14 コンパイルするJava言語仕様のバージョン

アプリケーションサーバのバージョン

JDKのバージョン

コンパイルJava言語仕様バージョン

09-87から11-40より前

JDK11

Java SE 11

11-40以降

JDK11

Java SE 11

JDK17

Java SE 17

11-70以降

JDK21

Java SE 21

JSPファイルのスクリプティングに移行後のJava言語仕様(上記の表)に反したコーディングをしていて,JSPから生成されたサーブレットのソースファイルがコンパイルできない場合,J2EEサーバのユーザプロパティファイルのwebserver.jsp.compile.backcompatキーに,移行前と同じコンパイラのJava言語仕様のバージョンを指定します。

cjjspcコマンドを使用してJSP事前コンパイルを実行する場合は,cjjspcコマンドの-sourceオプションに移行前と同じ値を指定します。

JSPファイル内にスクリプティングを記述していない場合や,JSPファイルのスクリプティングが移行後のJava言語仕様に反さずJSPから生成したサーブレットのソースファイルのコンパイルが正常にできる場合,上記の設定は不要です。

互換性を重視したシステムへ移行する場合に必要な作業

移行前のアプリケーションサーバのコンパイルJava言語仕様バージョンに合わせて,次の値を設定してください。

J2EEサーバ用のユーザプロパティファイル(usrconf.properties)のwebserver.jsp.compile.backcompatキー
  • JDK11を使用している場合:「1.6」「6」「1.7」「7」「1.8」または「8」

  • JDK17を使用している場合:「1.7」「7」「1.8」「8」または「11」

  • JDK21を使用している場合:「1.8」「8」「11」または「17」

cjjspcコマンドの-sourceオプション(cjjspcコマンドを使用してJSP事前コンパイルを実行する場合)
  • JDK11を使用している場合:「1.6」「6」「1.7」「7」「1.8」「8」または「9」

  • JDK17を使用している場合:「1.7」「7」「1.8」「8」「9」または「11」

  • JDK21を使用している場合:「1.8」「8」「9」「11」または「17」

推奨機能を使用したシステムへ移行する場合に必要な作業

JSPファイルのスクリプティングに移行後のJava言語仕様に反したコーディングをしている場合,移行後のJava言語仕様に従うようにJSPファイルを修正してください。

影響を受けるもの

ありません。

(12) GCのデフォルト

GCのデフォルトは,11-30以前はSerialGCですが,11-40以降はG1GCになります。ただし,論理プロセッサが2未満または物理メモリが1792メガバイト未満の場合は,自動でSerialGCがデフォルトとして選択されます。

互換性を重視したシステムへ移行する場合に必要な作業

移行前にJDKでGCのオプションを指定していない,かつ11-40以降も11-30以前と同様にSerialGCを使用する場合は,-XX:+UseSerialGCオプションを指定してください。

推奨機能を使用したシステムへ移行する場合に必要な作業

作業はありません。

影響を受けるもの

ありません。

(13) Jacksonのバージョン

11-50以降,デフォルトのJSON Providerとして提供するJacksonのバージョンが2.9.8から2.17.1に変更になります。11-50より前では,ejbserver.javaee.jaxrs.json.maxDepthプロパティでJSONデータのネスト数の上限値を指定しましたが,11-50以降,ejbserver.javaee.jaxrs.json.maxDepthプロパティは削除され,JSONデータのネスト数の上限値を指定することはできなくなり,指定されても無視されます。

ejbserver.javaee.jaxrs.json.maxDepthプロパティのデフォルト値は500でしたが,11-50以降,JSONデータのネスト数の上限は1000になります。ネスト数が500から1000に変更になっても,問題はありません。なお,ユーザで用意したJacksonを使用する場合だけ,com.fasterxml.jackson.core.StreamReadConstraints.BuilderクラスのmaxNestingDepthメソッドでデフォルト値を変更できます。詳細は,Jacksonのドキュメントを参照してください。

また,JSONデータのネスト数が上限に達した場合,11-50より前ではHTTPのステータスコードは400が返りますが,11-50以降は,HTTPのステータスコードは500が返ります。

互換性を重視したシステムへ移行する場合に必要な作業

作業はありません。

推奨機能を使用したシステムへ移行する場合に必要な作業

作業はありません。

影響を受けるもの

ありません。

(14) WebアプリケーションクラスローダによるマルチリリースJARの処理

11-50以降,Webアプリケーションクラスローダで読み込むアプリケーションのJARを,マルチリリースJARとして処理する機能がデフォルトで有効になります。11-40以前から11-50以降に移行した場合でも同様です。

そのため,WARファイル内にマルチリリースJARが存在する場合,マルチリリースJARであることに関係なくバージョン化されていない単純なJARとしての動作を期待していたアプリケーションでは,11-40以前と動作が変わることがあります。動作が変わることによって問題が発生した場合は,ユーザプロパティファイルに次のプロパティを設定して,マルチリリースJARとして処理する機能を無効にしてください。

ejbserver.deploy.multi_release_jar.enabled=false
互換性を重視したシステムへ移行する場合に必要な作業

作業はありません。

推奨機能を使用したシステムへ移行する場合に必要な作業

作業はありません。

影響を受けるもの

ありません。

(15) デフォルトの文字セット

JDK18からjava.nio.charset.CharsetクラスのdefaultCharset()メソッドの仕様が変更され,デフォルトの文字セットがUTF-8になりました。この動作変更の影響で,OSのデフォルトの文字セットがUTF-8ではない環境で文字セットを明示的に指定しないアプリケーションの場合,実行時およびコンパイル時に文字化けが発生するおそれがあります。

文字化けが発生する場合は,次のどちらかで対応する必要があります。

なお,OSのデフォルトの文字セットがUTF-8の環境である場合や,デフォルトの文字セットを使用しないプログラムの場合は,対応は不要です。

(16) 世代別ZGC

JDK21から,世代別にオブジェクト管理することでパフォーマンスを向上させた世代別ZGC(Generational ZGC)が導入されました。ただし,アプリケーションサーバに同梱されているJDK21ではサポートしていません。

(17) 仮想スレッドのリソース見積もり

JDK21以降,OSではなくJavaランタイムによって実装される軽量なスレッドである仮想スレッドが導入されました。仮想スレッド使用時のアプリケーションが作成するスレッド数の見積もりは,アプリケーション中で追加作成した仮想スレッド数で行います。

(18) エージェントの動的ロード

JDK21以降,実行中のJavaVMにエージェントが動的にロードされる場合,警告を出すようになりました。これによってエージェントの動的ロードを行っている場合は,警告が出ます。

警告を出さないようにする場合は,次のどちらかで対応する必要があります。

(19) デフォルトの文字コードの変更

Windows環境のJDK21以降では,デフォルトの文字コードがUTF-8に変更されます。そのため,Windows環境の場合,出力される文字コードがJDK17以前はShift-JISでしたが,JDK21以降ではUTF-8に変更されます。ただし,一部のファイルはShift-JISのまま出力されます。Shift-JISを使用したい場合は,JDK17以前を使用してください。

表10‒15 JDK21環境でShift-JISで出力するログファイル一覧

項番

ファイル名

内容

1

adminagent.err

運用管理エージェントの標準エラー出力コマンドライン

2

adminagentctl.exe.[n].log

運用管理エージェントの起動・停止コマンドのログ

3

adminagentsv.exe.[n]log

運用管理エージェントサービスのログ

4

adminagentsv.exe.out

運用管理エージェントサービスの標準出力

5

adminagentsv.exe.err

運用管理エージェントサービスの標準エラー出力

6

mngsvr.exe.[n].log

Management Serverサービスのログ

7

mngsvr.exe.err

Management Serverサービスの標準エラー出力

8

mngsvr.exe.out

Management Serverサービスの標準出力

9

mngsvrctl.exe.[n].log

Management Serverサービス起動・停止コマンドのログ

10

mngsvrmonitor.log

モニタ起動コマンドのログ

(20) JDK21でのメソッドキャンセル機能の制限

JDK21以降では,Thread.stop()メソッドを使用してスレッドを停止する機能が削除されたため,メソッドキャンセルを実行した場合,次の制限事項があります。

(21) Windows環境のJDK21で使用されるデフォルトの文字セット変更の影響

Windows環境のJDK21で使用されるデフォルトの文字セットについて,次に示す変更の影響があります。

(22) ejb.server.log.directoryプロパティの注意事項の追加

JDK21以降でアプリケーションサーバを動作させる場合では,ejb.server.log.directoryプロパティで指定する出力先のパスに日本語を含めないでください。指定できる文字は,半角英数字,アンダースコア(_),またはハイフン(-)です。