ここでは、以下について説明します。
メッセージブローカの起動
JMSクライアントアプリケーションが物理格納先にメッセージを送受信する場合、物理格納先を管理しているメッセージブローカを事前に起動する必要があります。
メッセージブローカは、以下の方法で起動します。
imqbrokerdコマンドを使用して、メッセージブローカを起動します。詳細については、「リファレンスマニュアル(コマンド編)」の「Java EE運用コマンド」-「imqbrokerd」を参照してください。
imqbrokerd -name メッセージブローカ名 -port ポート番号
ポイント
imqbrokerdコマンド実行後、コマンドプロンプトは復帰しません。
メッセージブローカは、通常コマンドで起動する必要がありますが、オペレーティングシステム起動時に自動起動する運用を行う場合、以下の手順でサービス化することができます。
imqsvcadmin installサブコマンドを実行して、サービスに登録します。メッセージブローカがサービス名「Interstage Message Queue Broker」としてサービスに登録されます。コマンドの詳細については、「リファレンスマニュアル(コマンド編)」の「Java EE運用コマンド」-「imqsvcadmin」-「installサブコマンド」を参照してください。
imqsvcadmin install -args メッセージブローカの起動引数
例
メッセージブローカのインスタンス名を「test」、ポート番号を「37676」に設定してサービス化する場合は、以下のようにimqsvcadminコマンドを実行します。
imqsvcadmin install -args "-name test -port 37676"
imqsvcadmin removeサブコマンドを実行して、サービス登録を解除します。サービスの削除実行時にメッセージブローカが起動中だった場合、メッセージブローカの停止後にサービスから削除されます。コマンドの詳細については、「リファレンスマニュアル(コマンド編)」の「Java EE運用コマンド」-「imqsvcadmin」-「removeサブコマンド」を参照してください。
imqsvcadmin remove
注意
サービス化できるメッセージブローカは、1つです。
サービス登録時に指定した情報は、変更できません。変更する場合は、いったんサービスを削除してから、新しい情報を使用して登録してください。
サービスのログオンアカウントを設定する場合は、管理者権限を持つアカウントを設定してください。
(RHEL5/RHEL6)
本作業は、rootユーザで実施してください。
RCプロシジャの編集
サービス化のため、RCプロシジャ("ijmq")が、以下のディレクトリに提供されています。
格納先
/opt/FJSVisjee/imq/etc/init.d
ijmqファイルを、任意の場所(以下の例では/workディレクトリ)に複写します。
cp /opt/FJSVisjee/imq/etc/init.d/ijmq /work
複写後、ijmqファイルの以下の項目を編集します。設定値は、ダブルクォーテーション("")で囲んで設定してください。
BROKER_PORT
サービス化するメッセージブローカプロセスが使用するポート番号です。
ここで設定した値は、メッセージブローカのインスタンス名としても採用されます。
BROKER_OPT
メッセージブローカプロセスに設定するメッセージブローカオプションのリストです。
複数指定する場合は、オプションを半角の空白で区切ってください。
VM_ARGS
メッセージブローカプロセス起動時にJVMに渡すVMオプションのリストです。
複数指定する場合は、オプションを半角の空白で区切ってください。
注意
RCプロシジャの編集について
上記以外の項目は、編集しないでください。RCプロシジャが正しく動作しない可能性があります。
ポート番号の設定について
ポート番号には、システム上のアプリケーションを含むすべてのサービスにおいて、それぞれ異なるポート番号を設定する必要があります。以下の値を設定しないでください。
・システム内の他のサービス、システム上のアプリケーションが使用するポート番号
・システムが動的に割り当てる領域のポート番号(エフェメラルポート)
ポート番号の設定については、「システム設計ガイド」の「ポート番号」を参照してください。
例
以下のように設定します。
#!/bin/sh # # ijmq: Interstage Application Server # # Version: @(#) /etc/rc.d/init.d/ijmq 1.0 # # Author: FUJITSU LIMITED # # chkconfig: 2345 97 3 # description: Interstage Application Server # processname: imqbrokerd # set broker port BROKER_PORT="27676" BROKER_OPT="-Dimq.system.max_count=1 -Dimq.system.max_size=1k" VM_ARGS="-Xmx256m"
RCプロシジャの格納
1.で作成したファイルのパーミッションを「0500」に変更し、/etc/init.dに格納します。複数のRCプロシジャの作成/登録を行う場合は、RCプロシジャのファイル名を変更して登録してください。
chmod 0500 /work/ijmq mv /work/ijmq /etc/init.d/ijmq01
サービスの登録
/etc/rc0.d、/etc/rc2.dに、シンボリックリンクを作成します。
ln -s /etc/init.d/ijmq01 /etc/rc0.d/K03ijmq01 ln -s /etc/init.d/ijmq01 /etc/rc2.d/S97ijmq01
chkconfigコマンドを使用してサービスを登録します。
/sbin/chkconfig --add ijmq01
本作業は、rootユーザで実施してください。
サービスの停止
サービスが起動している場合は、停止します。
/etc/init.d/ijmq01 stop
サービスの登録解除
/etc/rc0.d、/etc/rc2.dに、作成したシンボリックリンクを削除します。
rm /etc/rc0.d/K03ijmq01 rm /etc/rc2.d/S97ijmq01
chkconfigコマンドを使用してサービスの登録を解除します。
/sbin/chkconfig --del ijmq01
RCプロシジャの削除
/etc/init.dに格納したRCプロシジャを、別ディレクトリに退避/削除します。
注意
登録したサービスは、Interstageのアンインストール時に削除されません。アンインストール後に不要となったサービスは、必ず削除してください。
RCプロシジャは、IJServerクラスタのバックアップ・リストアの対象になりません。バックアップ時には、別途、登録したRCプロシジャファイルのバックアップを行ってください。また、リストア時には、バックアップしたRCプロシジャの登録作業から再度実行してください。
(RHEL7)
本作業は、rootユーザで実施してください。
unitファイルの編集
サービス化のため、unitファイル("FJSVijmq.service")が、以下のディレクトリに提供されています。
格納先
/opt/FJSVisjee/imq/etc/systemd/system/FJSVijmq.service
FJSVijmq.serviceファイルを、任意の場所(以下の例では/workディレクトリ)に複写します。
cp /opt/FJSVisjee/imq/etc/systemd/system/FJSVijmq.service /work
複写後、FJSVijmq.serviceファイルのEnvironmentオプションに設定されている以下の項目を編集します。Environmentオプションは、ダブルクォーテーション("")で囲んで設定してください。
BROKER_PORT
サービス化するメッセージブローカプロセスが使用するポート番号です。
ここで設定した値は、メッセージブローカのインスタンス名としても採用されます。
BROKER_OPT
メッセージブローカプロセスに設定するメッセージブローカオプションのリストです。
複数指定する場合は、オプションを半角の空白で区切ってください。
VM_ARGS
メッセージブローカプロセス起動時にJVMに渡すVMオプションのリストです。
複数指定する場合は、オプションを半角の空白で区切ってください。
注意
unitファイルの編集について
上記以外の項目は、編集しないでください。サービスの処理が正しく動作しない可能性があります。
ポート番号の設定について
ポート番号には、システム上のアプリケーションを含むすべてのサービスにおいて、それぞれ異なるポート番号を設定する必要があります。以下の値を設定しないでください。
・システム内の他のサービス、システム上のアプリケーションが使用するポート番号
・システムが動的に割り当てる領域のポート番号(エフェメラルポート)
ポート番号の設定については、「システム設計ガイド」の「ポート番号」を参照してください。
例
以下のように設定します。
[Unit] Description=%p Wants=network-online.target After=network.target network-online.target rsyslog.service remote-fs.target nss-lookup.target Before=FJSVijdas_start.service FJSVijdas_stop.service FJSVtd_start.service FJSVtd_stop.service [Service] Environment="BROKER_PORT=27676" Environment="BROKER_OPT=-Dimq.system.max_count=1 -Dimq.system.max_size=1k" Environment="VM_ARGS=-Xmx256m" Type=forking
unitファイルの格納
1.で作成したファイルのパーミッションを「0400」に変更し、/etc/systemd/systemに格納します。
注意
unitファイルの作成/登録を行う場合は、unitファイルのファイル名を変更して登録してください。
unitファイル名は、「FJSVijmq_識別子.service」とすることを推奨します。なお、識別子には、英数字だけを使用してください。
また、複数のunitファイルを作成/登録する場合は、unitファイル名の識別子が同じにならないようにしてください。
chmod 0400 /work/FJSVijmq.service mv /work/FJSVijmq.service /etc/systemd/system/FJSVijmq_sample.service
サービスの登録
systemctlコマンドを使用してサービスを登録します。
systemctl enable FJSVijmq_sample.service
サービスの起動
systemctlコマンドを使用してサービスを起動します。
systemctl start FJSVijmq_sample.service
一度サービス登録した後に、unitファイルを編集し再度登録する場合は、必ず以下のコマンドを実行してください。
systemctl daemon-reload
本作業は、rootユーザで実施してください。
サービスの停止
サービスが起動している場合は、停止します。
systemctl stop FJSVijmq_sample.service
サービスの登録解除
systemctlコマンドを使用してサービスの登録を解除します。
systemctl disable FJSVijmq_sample.service
unitファイルの削除
/etc/systemd/systemに格納したunitファイルを、別ディレクトリに退避/削除します。
注意
登録したサービスは、Interstageのアンインストール時に削除されません。アンインストール後に不要となったサービスは、必ず削除してください。
unitファイルは、IJServerクラスタのバックアップ・リストアの対象になりません。バックアップ時には、別途、登録したunitファイルのバックアップを行ってください。また、リストア時には、バックアップしたunitファイルの登録作業から再度実行してください。
imqcmd list svcサブコマンドを使用して、メッセージブローカの起動状態が確認できます。コマンドの詳細については、「リファレンスマニュアル(コマンド編)」の「Java EE運用コマンド」-「imqcmd」-「list svcサブコマンド」を参照してください。
例
メッセージブローカが起動している場合
「Successfully listed services.」が出力されます。
imqcmd list svc -b localhost:7676
Username: admin
Password:
Listing all the services on the broker specified by:
-------------------------
Host Primary Port
-------------------------
localhost 7676
------------------------------------------------
Service Name Port Number Service State
------------------------------------------------
admin 49205 (dynamic) RUNNING
httpjms - UNKNOWN
httpsjms - UNKNOWN
jms 49206 (dynamic) RUNNING
ssladmin dynamic UNKNOWN
ssljms dynamic UNKNOWN
Successfully listed services.
メッセージブローカが停止している場合
IJMQ_C4003が出力されます。
imqcmd list svc -b localhost:7676 Username: admin Password: Listing all the services on the broker specified by: ------------------------- Host Primary Port ------------------------- localhost 7676 2012/05/31 19:40:42 com.sun.messaging.jmq.jmsclient.ExceptionHandler throwConnectionException 警告: IJMQ_C4003: Error occurred on connection creation [localhost:7676]. - cause: java.net.ConnectException: Connection refused: connect Error while connecting to the broker on host 'localhost' and port '7676'. com.sun.messaging.jms.JMSException: IJMQ_C4003: Error occurred on connection creation [localhost:7676]. - cause: java.ne t.ConnectException: Connection refused: connect Please verify that there is a broker running on the specified host and port or use the '-b' option to specify the correct broker host and port. Listing services failed.
メッセージブローカを起動するホストは、hostsファイルの内容/DNSの設定により、名前解決(IPアドレス解決)を可能にしておく必要があります。
ネットワーク環境をDNSで運用している場合は、DNSを設定してください。DNSで運用していない場合は、以下に格納されているhostsファイルの内容を確認して、必要に応じて追加/修正してください。
hostsファイルの記載方法については、「使用上の注意」の「注意事項」-「Interstage共通の注意事項」-「hostsファイルの記載について」を参照してください。
(Windows(R)のインストールフォルダ)\system32\drivers\etc\hosts
/etc/hosts
以下のサービスを起動する前に、メッセージブローカを起動してください。
IJServerクラスタ
Interstage Java EE DASサービス
上記サービスの起動後に、それぞれのログを参照し、ERROR/WARNINGメッセージが出力されていないかを確認してください。
以下のERROR/WARNINGメッセージが出力されている場合は、上記サービスを停止し、メッセージブローカを起動後、再度起動してください。
ISJEE: WARNING: ISJEE_IJMQ_C4003: Error occurred on connection creation [{0}:{1}]. - cause: java.net.ConnectException: Connection refused: connect: ThreadID=10,ThreadName=main
ISJEE: WARNING: ISJEE_MQJMSRA_RA4001: getJMXServiceURLList:Exception:Message=Caught exception when contacing portmapper.: ThreadID=10,ThreadName=main
ISJEE: ERROR: ISJEE_MQJMSRA_MC4001: constructor:Aborting:JMSException on createConnection=IJMQ_C4003: Error occurred on connection creation [{0}:{1}]. - cause: java.net.ConnectException: Connection refused: connect: ThreadID=10,ThreadName=main
JMSを使用していないIJServerクラスタまたはInterstage Java EE DASサービス運用環境から、JMSを使用するIJServerクラスタまたはInterstage Java EE DASサービス運用環境に変更する場合は、必ず以下を行ってください。
IJServerクラスタまたはInterstage Java EE DASサービスを停止します。
メッセージブローカを起動します。
IJServerクラスタまたはInterstage Java EE DASサービスを再度起動します。
IJServerクラスタまたはInterstage Java EE DASサービスを再起動しない場合、JMS機能が正しく使用できません。
以下の条件の場合、IJServerクラスタまたはInterstage Java EE DASサービスの起動に時間がかかる可能性があります。
JMSを使用する場合。かつ、
IJServerクラスタまたはInterstage Java EE DASサービス起動時にメッセージブローカが未起動の場合。かつ、
JMSのリソース定義で有効なConnectionFactoryを複数定義している場合。または、MDBアプリケーションを複数配備している場合。
メッセージブローカが未起動であるため、必要に応じて、IJServerクラスタの起動待ち時間(デフォルト600秒)を修正し、IJServerクラスタの起動に時間がかかる現象を回避してください。
メッセージブローカの停止
imqcmd shutdown bkrサブコマンドを使用して、メッセージブローカを停止します。停止対象のメッセージブローカが動作するホスト名とポート番号を指定してください。コマンドの詳細については、「リファレンスマニュアル(コマンド編)」の「Java EE運用コマンド」-「imqcmd」-「shutdown bkrサブコマンド」を参照してください。
imqcmd shutdown bkr -b localhost:37676
メッセージブローカの一時停止
imqcmd pause bkrサブコマンドを使用して、メッセージブローカを一時停止します。メッセージブローカを一時停止すると、新しい接続の受け入れ、メッセージの受信、配信を停止できます。コマンドの詳細については、「リファレンスマニュアル(コマンド編)」の「Java EE運用コマンド」-「imqcmd」-「pause bkrサブコマンド」を参照してください。
imqcmd pause bkr -b localhost:37676
メッセージブローカの再開
imqcmd resume bkrサブコマンドを使用して、メッセージブローカを再開します。メッセージブローカを再開すると、メッセージブローカの新しい接続の受け入れ、メッセージの受信、配信が再開されます。コマンドの詳細については、「リファレンスマニュアル(コマンド編)」の「Java EE運用コマンド」-「imqcmd」-「resume bkrサブコマンド」を参照してください。
imqcmd resume bkr -b localhost:37676
管理ユーザパスワードの変更
imqcmdコマンドを使用する場合は、メッセージブローカの管理ユーザとパスワードが必要です。管理ユーザとパスワードについては、「5.7.1 ユーザとグループ」を参照してください。
メッセージブローカには、管理ユーザ「admin」が、デフォルトで作成されています。セキュリティの観点から、管理ユーザ「admin」のパスワードは必ず変更してください。
パスワードは、imqusermgr updateサブコマンドを使用して変更します。コマンドの詳細については、「リファレンスマニュアル(コマンド編)」の「Java EE運用コマンド」-「imqusermgr」-「updateサブコマンド」を参照してください。
メッセージブローカを起動します。
imqusermgr updateサブコマンドを使用して管理ユーザ「admin」のパスワードを変更します。
IJServerクラスタを停止します。
Interstage Java EE DASサービスを停止します。
メッセージブローカを停止します。
メッセージブローカを起動します。
Interstage Java EE DASサービスを起動します。
IJServerクラスタを起動します。