ここでは、以下について説明します。
メッセージブローカの起動
JMSクライアントアプリケーションが物理格納先にメッセージを送受信する場合、物理格納先を管理しているメッセージブローカを事前に起動する必要があります。
メッセージブローカは、以下の方法で起動します。
なお、メッセージブローカを起動する前に、「メッセージブローカ起動時の注意事項」を参照し、メッセージブローカを正常に起動できるよう注意してください。
imqbrokerdコマンドを使用して、メッセージブローカを起動します。詳細については、「10.5 imqbrokerd」を参照してください。
C:\Interstage\F3FMisje7\mq\bin\imqbrokerd -name メッセージブローカ名 -port ポート番号
/opt/FJSVisje7/mq/bin/imqbrokerd -name メッセージブローカ名 -port ポート番号
ポイント
imqbrokerdコマンド実行後、コマンドプロンプトは復帰しません。
メッセージブローカは、通常コマンドで起動する必要がありますが、オペレーティングシステム起動時に自動起動する運用を行う場合は、以下の手順でサービス化することができます。
imqsvcadmin installサブコマンドを実行して、サービスに登録します。メッセージブローカがサービス名「Interstage Message Queue Broker(ISJE7)」としてサービスに登録されます。コマンドの詳細については、「10.7.1 installサブコマンド」を参照してください。
C:\Interstage\F3FMisje7\mq\bin\imqsvcadmin install -args メッセージブローカの起動引数
例
メッセージブローカのインスタンス名を「test」、ポート番号を「27676」に設定してサービス化する場合は、以下のようにimqsvcadminコマンドを実行します。
C:\Interstage\F3FMisje7\mq\bin\imqsvcadmin install -args "-name test -port 27676"
imqsvcadmin removeサブコマンドを実行して、サービス登録を解除します。サービスの削除実行時にメッセージブローカが起動中だった場合、メッセージブローカの停止後にサービスから削除されます。コマンドの詳細については、「10.7.2 removeサブコマンド」を参照してください。
C:\Interstage\F3FMisje7\mq\bin\imqsvcadmin remove
注意
サービス化できるメッセージブローカは、1つです。
サービス登録時に指定した情報は、変更できません。変更する場合は、いったんサービスを削除してから、新しい情報を使用して登録してください。
サービスのログオンアカウントを設定する場合は、管理者権限を持つアカウントを設定してください。
サービスの登録状態とサービス登録時に指定した情報は、IJServerクラスタのバックアップ・リストアの対象になりません。リストア時には、必要に応じてメッセージブローカのサービス登録作業から再度実行してください。
(RHEL6)
本作業は、rootユーザで実施してください。
RCプロシジャの編集
サービス化のため、RCプロシジャ("ijmq")が、以下のディレクトリに提供されています。
格納先
/opt/FJSVisje7/mq/etc/init.d
ijmqファイルを、任意の場所(以下の例では/workディレクトリ)に複写します。
cp /opt/FJSVisje7/mq/etc/init.d/ijmq /work
複写後、ijmqファイルの以下の項目を編集します。設定値は、ダブルクォーテーション("")で囲んで設定してください。
BROKER_PORT
サービス化するメッセージブローカプロセスが使用するポート番号です。
ここで設定した値は、メッセージブローカのインスタンス名としても採用されます。
BROKER_OPT
メッセージブローカプロセスに設定するメッセージブローカオプションのリストです。
複数指定する場合は、オプションを半角の空白で区切ってください。
VM_ARGS
メッセージブローカプロセス起動時にJVMに渡すVMオプションのリストです。
複数指定する場合は、オプションを半角の空白で区切ってください。
注意
RCプロシジャの編集について
RCプロシジャ("ijmq")は、直接編集しないでください。必ず任意の場所に複写した後、複写したファイルを編集してください。
また、上記以外の項目は、編集しないでください。RCプロシジャが正しく動作しない可能性があります。
ポート番号の設定について
ポート番号には、システム上のアプリケーションを含むすべてのサービスにおいて、それぞれ異なるポート番号を設定する必要があります。以下の値を設定しないでください。
・システム内の他のサービス、システム上のアプリケーションが使用するポート番号
・システムが動的に割り当てる領域のポート番号(エフェメラルポート)
ポート番号の設定については、「付録D ポート番号」を参照してください。
例
以下のように設定します。
#!/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ファイル("FJSVij7mq.service")が、以下のディレクトリに提供されています。
格納先
/opt/FJSVisje7/mq/etc/systemd/system/FJSVij7mq.service
FJSVij7mq.serviceファイルを、任意の場所(以下の例では/workディレクトリ)に複写します。
cp /opt/FJSVisje7/mq/etc/systemd/system/FJSVij7mq.service /work
複写後、FJSVij7mq.serviceファイルのEnvironmentオプションに設定されている以下の項目を編集します。Environmentオプションは、ダブルクォーテーション("")で囲んで設定してください。
BROKER_PORT
サービス化するメッセージブローカプロセスが使用するポート番号です。
ここで設定した値は、メッセージブローカのインスタンス名としても採用されます。
BROKER_OPT
メッセージブローカプロセスに設定するメッセージブローカオプションのリストです。
複数指定する場合は、オプションを半角の空白で区切ってください。
本項目を削除しないでください。また本項目に必ず値を設定してください。
VM_ARGS
メッセージブローカプロセス起動時にJVMに渡すVMオプションのリストです。
複数指定する場合は、オプションを半角の空白で区切ってください。
注意
unitファイルの編集について
unitファイル("FJSVij7mq.service")は、直接編集しないでください。必ず任意の場所に複写した後、複写したファイルを編集してください。
BROKER_PORT項目を削除しないでください。また必ず値を設定してください。
BROKER_PORT項目の値が未設定の場合や削除されている場合は、サービスの処理が正しく動作しない可能性があります。
また、上記以外の項目は、編集しないでください。サービスの処理が正しく動作しない可能性があります。
ポート番号の設定について
ポート番号には、システム上のアプリケーションを含むすべてのサービスにおいて、それぞれ異なるポート番号を設定する必要があります。以下の値を設定しないでください。
・システム内の他のサービス、システム上のアプリケーションが使用するポート番号
・システムが動的に割り当てる領域のポート番号(エフェメラルポート)
ポート番号の設定については、「付録D ポート番号」を参照してください。
例
以下のように設定します。
[Unit] Description=%p Wants=network-online.target After=network.target network-online.target rsyslog.service remote-fs.target nss-lookup.target Before=FJSVpcmiisje7_start.service FJSVpcmiisje7_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ファイル名は、「FJSVij7mq_識別子.service」とすることを推奨します。なお、識別子には、英数字だけを使用してください。
また、複数のunitファイルを作成/登録する場合は、unitファイル名の識別子が同じにならないようにしてください。
chmod 0400 /work/FJSVij7mq.service mv /work/FJSVij7mq.service /etc/systemd/system/FJSVij7mq_sample.service
サービスの登録
systemctlコマンドを使用してサービスを登録します。
systemctl enable FJSVij7mq_sample.service
サービスの起動
systemctlコマンドを使用してサービスを起動します。
systemctl start FJSVij7mq_sample.service
一度サービス登録した後に、unitファイルを編集し再度登録する場合は、必ず以下のコマンドを実行してください。
systemctl daemon-reload
本作業は、rootユーザで実施してください。
サービスの停止
サービスが起動している場合は、停止します。
systemctl stop FJSVij7mq_sample.service
サービスの登録解除
systemctlコマンドを使用してサービスの登録を解除します。
systemctl disable FJSVij7mq_sample.service
unitファイルの削除
/etc/systemd/systemに格納したunitファイルを、別ディレクトリに退避/削除します。
注意
登録したサービスは、Interstageのアンインストール時に削除されません。アンインストール後に不要となったサービスは、必ず削除してください。
unitファイルは、IJServerクラスタのバックアップ・リストアの対象になりません。バックアップ時には、別途、登録したunitファイルのバックアップを行ってください。また、リストア時には、バックアップしたunitファイルの登録作業から再度実行してください。
imqcmd list svcサブコマンドを使用して、メッセージブローカの起動状態が確認できます。コマンドの詳細については、「10.6.8 list svcサブコマンド」を参照してください。
例
メッセージブローカが起動している場合
「Successfully listed services.」が出力されます。
C:\Interstage\F3FMisje7\mq\bin\imqcmd list svc -b localhost:17686
Username: admin
Password:
Listing all the services on the broker specified by:
-------------------------
Host Primary Port
-------------------------
localhost 17686
------------------------------------------------
Service Name Port Number Service State
------------------------------------------------
admin 49205 (dynamic) RUNNING
httpjms - UNKNOWN
httpsjms - UNKNOWN
jms 49206 (dynamic) RUNNING
jmsdirect - RUNNING
mqdirect2 - RUNNING
ssladmin dynamic UNKNOWN
ssljms dynamic UNKNOWN
wsjms 7670 (static) UNKNOWN
wssjms 7671 (static) UNKNOWN
Successfully listed services.
メッセージブローカが停止している場合
C4003が出力されます。
/opt/FJSVisje7/mq/bin/imqcmd list svc -b localhost:17686 Username: admin Password: Listing all the services on the broker specified by: ------------------------- Host Primary Port ------------------------- localhost 17686 Nov 29, 2016 9:34:38 AM com.sun.messaging.jmq.jmsclient.ExceptionHandler throwConnectionException WARNING: [C4003]: Error occurred on connection creation [localhost:17686]. - cause: java.net.ConnectException: Connection refused Error while connecting to the broker on host 'localhost' and port '17686'. [C4003]: Error occurred on connection creation [localhost:17686]. - cause: java.net.ConnectException: Connection refused 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 7 DASサービス
上記サービスの起動後に、それぞれのログを参照し、以下のメッセージが出力されていないかを確認してください。メッセージが出力されている場合は、上記サービスを停止し、メッセージブローカを起動後、再度起動してください。
[C4003]: Error occurred on connection creation [{0}:{1}]. - cause: java.net.ConnectException: Connection refused: connect
Solaris環境の場合、メッセージブローカが使用するポートが競合しないようにメッセージブローカを起動してください。
メッセージブローカが使用する、代表ポートを除く各種ポートの設定を行っていない場合、メッセージブローカのポートマッパー機能によりエフェメラルポートが自動的に割り振られ、使用されます。メッセージブローカがエフェメラルポートを使用している場合、エフェメラルポートを使用する他プロセスとポート番号が競合し、正常に動作できなくなる可能性があります。
メッセージブローカが使用するポートが他プロセスと競合しないよう、以下のいずれかの方法でメッセージブローカを起動してください。
メッセージブローカが使用するポートにエフェメラルポート以外のポート番号を設定し、システム上で一意のポート番号を使用するようにします。
例
27676~27680のポート番号を使用してメッセージブローカをコマンド起動する場合、以下のように実行します。
/opt/FJSVisje7/mq/bin/imqbrokerd -port 27676 -Dimq.admin.tcp.port=27677 -Dimq.jms.tcp.port=27678 -Dimq.jmx.connector.jmxrmi.port=27679 -Dimq.cluster.port=27680
以下のシステムプロパティをメッセージブローカのオプションプロパティとして指定します。
ただし、JMSの運用においてIPv6通信を使用しない場合にのみ、本システムプロパティを使用することができます。
java.net.preferIPv4Stack=true
例
システムプロパティjava.net.preferIPv4Stackにtrueを指定し、メッセージブローカをコマンド起動する場合、以下のように実行します。
/opt/FJSVisje7/mq/bin/imqbrokerd -Djava.net.preferIPv4Stack=true
メッセージブローカが使用するポートの設定については、「2.19.5 ポートマッパー」、および「8.7.1 接続サービスに関するプロパティ」を参照してください。
JMSを使用していないIJServerクラスタまたはInterstage Java EE 7 DASサービス運用環境から、JMSを使用するIJServerクラスタまたはInterstage Java EE 7 DASサービス運用環境に変更する場合は、必ず以下を行ってください。
IJServerクラスタまたはInterstage Java EE 7 DASサービスを停止します。
メッセージブローカを起動します。
IJServerクラスタまたはInterstage Java EE 7 DASサービスを再度起動します。
IJServerクラスタまたはInterstage Java EE 7 DASサービスを再起動しない場合、JMS機能が正しく使用できません。
以下の条件の場合、IJServerクラスタまたはInterstage Java EE 7 DASサービスの起動に時間がかかる可能性があります。
JMSを使用する場合。かつ、
IJServerクラスタまたはInterstage Java EE 7 DASサービス起動時にメッセージブローカが未起動の場合。かつ、
MDBアプリケーションを複数配備している場合。
メッセージブローカが未起動であるため、必要に応じて、IJServerクラスタの起動待ち時間(デフォルト600秒)を修正し、IJServerクラスタの起動に時間がかかる現象を回避してください。
メッセージブローカの停止
imqcmd shutdown bkrサブコマンドを使用して、メッセージブローカを停止します。停止対象のメッセージブローカが動作するホスト名とポート番号を指定してください。コマンドの詳細については、「10.6.20 shutdown bkrサブコマンド」を参照してください。
C:\Interstage\F3FMisje7\mq\bin\imqcmd shutdown bkr -b localhost:17686
/opt/FJSVisje7/mq/bin/imqcmd shutdown bkr -b localhost:17686
メッセージブローカの一時停止
imqcmd pause bkrサブコマンドを使用して、メッセージブローカを一時停止します。メッセージブローカを一時停止すると、新しい接続の受け入れ、メッセージの受信、配信を停止できます。コマンドの詳細については、「10.6.9 pause bkrサブコマンド」を参照してください。
C:\Interstage\F3FMisje7\mq\bin\imqcmd pause bkr -b localhost:17686
/opt/FJSVisje7/mq/bin/imqcmd pause bkr -b localhost:17686
メッセージブローカの再開
imqcmd resume bkrサブコマンドを使用して、メッセージブローカを再開します。メッセージブローカを再開すると、メッセージブローカの新しい接続の受け入れ、メッセージの受信、配信が再開されます。コマンドの詳細については、「10.6.18 resume bkrサブコマンド」を参照してください。
C:\Interstage\F3FMisje7\mq\bin\imqcmd resume bkr -b localhost:17686
/opt/FJSVisje7/mq/bin/imqcmd resume bkr -b localhost:17686
管理ユーザパスワードの変更
imqcmdコマンドを使用する場合は、メッセージブローカの管理ユーザとパスワードが必要です。管理ユーザとパスワードについては、「5.9.1 ユーザとグループ」を参照してください。
メッセージブローカには、管理ユーザ「admin」が、デフォルトで作成されています。セキュリティの観点から、管理ユーザ「admin」のパスワードは必ず変更してください。
パスワードは、imqusermgr updateサブコマンドを使用して変更します。コマンドの詳細については、「10.8.3 updateサブコマンド」を参照してください。
メッセージブローカを起動します。
imqusermgr updateサブコマンドを使用して管理ユーザ「admin」のパスワードを変更します。
IJServerクラスタを停止します。
Interstage Java EE 7 DASサービスを停止します。
メッセージブローカを停止します。
メッセージブローカを起動します。
Interstage Java EE 7 DASサービスを起動します。
IJServerクラスタを起動します。
注意
管理ユーザ「admin」の管理ユーザパスワードを変更する前にパスワードファイルを作成している場合は、管理ユーザパスワードを変更したあと、imqusermgr encodeサブコマンドを使用してパスワードファイルを再作成してください。コマンドの詳細については、「10.8.5 encodeサブコマンド」を参照してください。