ここでは、以下について説明します。
メッセージブローカの起動
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つです。
サービス登録時に指定した情報は、変更できません。変更する場合は、いったんサービスを削除してから、新しい情報を使用して登録してください。
サービスのログオンアカウントを設定する場合は、管理者権限を持つアカウントを設定してください。
本作業は、rootユーザで実施してください。
rcスクリプトの編集
サービス化のため、rcスクリプト("ijmq")が、以下のディレクトリに提供されています。
格納先
/opt/FJSVisjee/imq/etc/init.d
ijmqスクリプトを、任意の場所(以下の例では/tmpディレクトリ)に複写します。
cp /opt/FJSVisjee/imq/etc/init.d/ijmq /tmp
複写後、ijmqファイルの以下の項目を編集します。設定値は、ダブルクォーテーション("")で囲んで設定してください。
BROKER_PORT
サービス化するブローカプロセスが使用するポート番号です。
ここで設定した値は、ブローカのインスタンス名としても採用されます。
BROKER_OPT
ブローカプロセスに設定するブローカオプションのリストです。
複数指定する場合は、オプションを半角の空白で区切ってください。
VM_ARGS
ブローカプロセス起動時にJVMに渡すVMオプションのリストです。
複数指定する場合は、オプションを半角の空白で区切ってください。
注意
上記以外の項目は、編集しないでください。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="37676" 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 /tmp/ijmq mv /tmp/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スクリプトの登録作業から再度実行してください。
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クラスタを起動します。