メッセージブローカの運用形態について
Jakarta EE 8におけるメッセージブローカのデフォルトの運用形態はREMOTE運用で、Java EE 5と同様に、DAS/GlassFish Serverインスタンスとは別のプロセスで動作します。この運用形態では、DAS/GlassFish Serverインスタンス上で動作するJakarta EEアプリケーション、および別プロセスで動作するJMSクライアントアプリケーションが、メッセージブローカとメッセージの送受信を行います。
Jakarta EE 8では、DASと同一のプロセス上で動作し、DASでJMSを使用する場合にだけ運用できる形態としてEMBEDDED運用があります。EMBEDDED運用については、以下の特徴から、実業務運用には使用しないでください。
DASだけ動作保証しています。
本運用しているメッセージブローカを停止するためには、DASを停止する必要があります。
GlassFish Serverクラスターで動作するJakarta EEアプリケーションから、本運用しているメッセージブローカへの通信はサポートしていません。
以下の定義項目をデフォルト値から変更して運用できません。
接続サービスに関するプロパティ
ルーティングサービスに関するプロパティ
物理格納先の自動生成に関するプロパティ
持続サービスに関するプロパティ
セキュリティに関するプロパティ
ログ機能に関するプロパティ
メッセージブローカの運用形態の詳細は「メッセージブローカの運用形態」を参照してください。
メッセージブローカの管理コマンドについて
メッセージブローカの管理に使用するimqcmdについて、Java EE 5とJakarta EE 8で、使用可能なサブコマンドが異なっています。Java EE 5でサポートしていた以下のサブコマンドはJakarta EE 8では使用できません。
pause svc サブコマンド
quiesce bkr サブコマンド
resume svc サブコマンド
unquiesce bkr サブコマンド
update bkr サブコマンド
update svc サブコマンド
メッセージブローカの管理コマンドが使用するパスワードファイルについて
メッセージブローカの管理に使用するimqcmdコマンドでは、管理者パスワードを記載したパスワードファイルを-passfileオプションに指定することで、パスワードのインタラクティブな問い合わせを抑止可能です。
Java EE 5では、管理者パスワードが平文で記載されているパスワードファイルだけが使用可能でしたが、Jakarta EE 8では、難読化したパスワードファイルを使用することができます。Jakarta EE 8でも、Java EE 5と同様に平文のパスワードファイルを使用することはできますが、セキュリティの観点から、難読化したパスワードファイルの使用を推奨します。
パスワードファイルを難読化するには、imqusermgr encodeサブコマンドを使用してパスワードファイルをエンコードします。パスワードファイルのエンコード方法については、「パスワードファイルの指定」および「11.8.5 encodeサブコマンド」を参照してください。
メッセージブローカ上でのスレッドプール管理のスレッドモデルについて
Java EE 5では、スレッドプール管理のスレッドモデルとして、接続ごとに受信用と送信用の2つの専用スレッドを使用する専用モデルと、メッセージの送受信時に共有スレッドにより接続を処理する共有モデルの2つがあります。
Jakarta EE 8では、スレッドプール管理のスレッドモデルは専用モデルのみとなります。
スレッドプール管理のスレッドモデルについての詳細は「2.19.4 接続サービス」を参照してください。
メッセージブローカのログについて
メッセージブローカのログについて、Java EE 5とJakarta EE 8で以下の差異があります。
Java EE 5
log.txt、log_N.txt(N:1から9までの数値)
Jakarta EE 8
log_N.txt(N:0から9までの数値)
ログローテーションの条件
Java EE 5では、ログサイズによるローテーション、または有効期間によるローテーションのいずれかの条件でローテーション可能でしたが、Jakarta EE 8では、ログサイズによるローテーションだけが可能です。
ログ出力時刻のタイムゾーン
Java EE 5では、ログ出力時刻のタイムゾーンを指定可能ですが、Jakarta EE 8では指定できません。
ログの設定は、ログ機能に関するプロパティを使用して設定します。Java EE 5とJakarta EE 8のログの設定における差異については、「15.9.6 ログ機能に関するプロパティ」を参照してください。
Java EE 5
[dd/MM/yyyy:HH:mm:ss.SSS Z] ログ本文
Jakarta EE 8
[#|yyyy-MM-ddTHH:mm:ss.SSSZ|LOG_LEVEL|5.1|imq.log.Logger|_ThreadID=スレッドID;_ThreadName=スレッド名;|ログ本文| #]
メッセージブローカのアクセスログについて
Java EE 5で出力可能なメッセージブローカのアクセスログは、Jakarta EE 8では出力できません。
Jakarta EE 8の場合、JMSクライアントからメッセージブローカへのアクセス情報(注)は、メッセージブローカのログで確認してください。
注)JMSクライアントからの接続情報および切断情報が、B1065およびB1066のメッセージにて記録されます。
アプリケーションが利用するJMS接続ファクトリについて
Jakarta EE 8では、Java EE 5では存在しないデフォルトのJMS接続ファクトリ「jms/__defaultConnectionFactory」が存在します。
Java EE 5アプリケーションでJMS接続ファクトリを利用する際、@ResourceアノテーションまたはDeployment Descriptorでnameやres-ref-nameのみ指定し、mapped-nameやjndi-nameの指定をしない場合、JMS接続ファクトリのJNDI名としてnameやres-ref-nameに指定した値が使用されていました。そのため、mapped-nameやjndi-nameの指定がなくても、意図したJMS接続ファクトリの利用が可能でした。
しかし、Jakarta EE 8アプリケーションでJMS接続ファクトリを利用する際、@ResourceアノテーションまたはDeployment Descriptorでnameやres-ref-nameのみ指定し、mapped-nameやjndi-nameの指定をしない場合は、デフォルトのJMS接続ファクトリ「jms/__defaultConnectionFactory」が使用されます。
Java EE 5とJakarta EE 8で、mapped-nameやjndi-nameの指定がない場合に利用するJMS接続ファクトリが異なるため、Java EE 5アプリケーションをJakarta EE 8へ移行する際は、意図したJMS接続ファクトリが使用されるよう、@ResourceアノテーションまたはDeployment Descriptorのmapped-nameやjndi-nameの指定を見直してください。
@ResourceアノテーションおよびDeployment Descriptorのmapped-nameやjndi-nameの指定方法については、「JMS接続ファクトリ」の例を参照してください。
JMS接続ファクトリの定義項目について
JMS接続ファクトリの以下の定義項目について、参照・設定する際に指定する定義項目名がJava EE 5とJakarta EE 8で異なります。Java EE 5とJakarta EE 8での定義項目名の違いを下表に示します。
定義項目 | Java EE 5 定義項目名 | Jakarta EE 8 定義項目名 |
---|---|---|
リソースタイプ | resources.connector-connection-pool.${jndi-name}.connection-definition-name | resources.connector-connection-pool.${jndi-name}-Connection-Pool.connection-definition-name |
説明 | resources.connector-connection-pool.${jndi-name}.description | resources.connector-connection-pool.${jndi-name}-Connection-Pool.description |
UserName | resources.connector-connection-pool.${jndi-name}.property.UserName | resources.connector-connection-pool.${jndi-name}-Connection-Pool.property.UserName |
Password | resources.connector-connection-pool.${jndi-name}.property.Password | resources.connector-connection-pool.${jndi-name}-Connection-Pool.property.Password |
ClientId | resources.connector-connection-pool.${jndi-name}.property.ClientId | resources.connector-connection-pool.${jndi-name}-Connection-Pool.property.ClientId |
任意のプロパティ名 | resources.connector-connection-pool.${jndi-name}.property.${PropertyName} | resources.connector-connection-pool.${jndi-name}-Connection-Pool.property.${PropertyName} |
初期および最小プールサイズ | resources.connector-connection-pool.${jndi-name}.steady-pool-size | resources.connector-connection-pool.${jndi-name}-Connection-Pool.steady-pool-size |
最大プールサイズ | resources.connector-connection-pool.${jndi-name}.max-pool-size | resources.connector-connection-pool.${jndi-name}-Connection-Pool.max-pool-size |
プールサイズ変更量 | resources.connector-connection-pool.${jndi-name}.pool-resize-quantity | resources.connector-connection-pool.${jndi-name}-Connection-Pool.pool-resize-quantity |
アイドルタイムアウト | resources.connector-connection-pool.${jndi-name}.idle-timeout-in-seconds | resources.connector-connection-pool.${jndi-name}-Connection-Pool.idle-timeout-in-seconds |
最大待ち時間 | resources.connector-connection-pool.${jndi-name}.max-wait-time-in-millis | resources.connector-connection-pool.${jndi-name}-Connection-Pool.max-wait-time-in-millis |
トランザクションサポート | resources.connector-connection-pool.${jndi-name}.transaction-support | resources.connector-connection-pool.${jndi-name}-Connection-Pool.transaction-support |