![]() | |
Sun Java System Message Queue 3.5 SP1 管理ガイド |
第 7 章
管理対象オブジェクトの管理管理対象オブジェクトを使用すると、ほかの JMS プロバイダへの移植が可能なクライアントアプリケーションを開発できます。管理対象オブジェクトは、プロバイダ固有の設定およびネーミング情報をカプセル化するオブジェクトです。通常、これらのオブジェクトは Message Queue の管理者によって作成され、クライアントアプリケーションがブローカへのコネクションを取得する際に使用されます。さらに、これらのオブジェクトは、物理的な送信先にメッセージを送信したり、物理的な送信先からメッセージを受信したりする場合にも使用されます。
管理対象オブジェクトの概要については、「Message Queue管理対象オブジェクト」を参照してください。
Message Queueは、管理対象オブジェクトを作成したり管理したりするための 2 つの管理ツールを提供しています。それは、コマンド行オブジェクトマネージャユーティリティ (imqobjmgr) と GUI 管理コンソールです。これらのツールでは、次のようなタスクを実行できます。
この章では、オブジェクトマネージャユーティリティ (imqobjmgr) を使用して、これらのタスクを実行する方法について説明します。これらのタスクを実行するには、使用するオブジェクトストアと作成する管理対象オブジェクトの両方の属性を理解する必要があるため、この章では、imqobjmgr を使用して管理対象オブジェクトを管理する方法を説明する前に、この 2 つのトピックの背景について説明します。
管理コンソールの使用法については、第 4 章「管理コンソールのチュートリアル」を参照してください。
オブジェクトストアについて管理対象オブジェクトは、即時に使用可能なオブジェクトストアに配置されます。クライアントアプリケーションは JNDI 検索を行うときに、このオブジェクトストアに配置された管理対象オブジェクトにアクセスします。標準 LDAP ディレクトリサーバまたはファイルシステムのオブジェクトストアの 2 種類のオブジェクトストアが使用できます。
LDAP サーバオブジェクトストア
LDAP サーバは、運用メッセージングシステム用のオブジェクトストアとしてお勧めします。LDAP 実装は、多数のベンダーでサポートされており、分散システムでの使用を考慮した設計になっています。LDAP サーバは、運用環境で役立つセキュリティ機能も備えています。
Message Queue 管理ツールは、LDAP サーバ上のオブジェクトストアを管理できます。ただし、はじめに LDAP サーバのマニュアルに記載されているとおり、java オブジェクトを格納し JNDI 検索を実行するように LDAP サーバを設定する必要があります。
また、LDAP サーバをオブジェクトストアとして使用している場合は、表 7-1 に示す属性を指定する必要があります。これらの属性は、次のように分類されます。
- 初期コンテキスト : LDAP サーバオブジェクトストアの場合、この属性は固定である
- ロケーション : LDAP サーバの設定時に、管理対象オブジェクトの URL とディレクトリパスを指定する。特に、指定したパスが存在することを確認する必要がある
- セキュリティ情報 : LDAP プロバイダによって異なる。セキュリティ情報をすべての操作で必要とするのか、あるいは格納データを変更する操作にだけ必要とするのか決める場合、使用する LDAP 実装に付属するマニュアルを参照する必要がある
ファイルシステムオブジェクトストア
Message Queue は、ファイルシステムのオブジェクトストア実装もサポートしています。ファイルシステムのオブジェクトストアは、まだ十分なテストが行われていないため、運用システムでの使用はお勧めしませんが、開発環境で使いやすいという利点があります。LDAP サーバをセットアップする必要はなく、ローカルのファイルシステム上にディレクトリを作成するだけで利用できます。
ただし、クライアントが複数のコンピュータノードにまたがって配備されている場合は、これらのクライアントがオブジェクトストアの常駐するディレクトリに対してアクセス権を持つときにだけ、ファイルシステムストアを集中オブジェクトストアとして使用できます。さらに、このディレクトリにアクセス可能なユーザーは、Message Queue の管理ツールを使用して、管理対象オブジェクトを作成および管理することができます。
ファイルシステムオブジェクトストアを使用している場合は、表 7-2 に示す属性を指定する必要があります。これらの属性は、次のように分類されます。
管理対象オブジェクト管理対象オブジェクトの概要については、「Message Queue管理対象オブジェクト」を参照してください。
Message Queue の管理対象オブジェクトには 2 つの基本的な種類があります。それは、コネクションファクトリと送信先です。コネクションファクトリ管理対象オブジェクトは、ブローカへのコネクションを作成するために、クライアントアプリケーションが使用します。送信先管理対象オブジェクトは、送信先を識別するために、クライアントアプリケーションが使用します。その送信先にプロデューサはメッセージを送信し、その送信先からコンシューマはメッセージを受信します。特殊な SOAP 終端管理対象オブジェクトは、SOAP メッセージングに使用されます。詳細は、『Message Queue Java Client Developer's Guide』を参照してください。
メッセージ配信モデル (ポイントツーポイント、またはパブリッシュ / サブスクライブ) に応じて、特定タイプのコネクションファクトリおよび送信先を使用できます。たとえば、ポイントツーポイントプログラミングの場合、キューコネクションファクトリとキューの送信先を使用できます。同様に、パブリッシュおよびサブスクライブプログラミングの場合、トピックコネクションファクトリとトピックの送信先を使用できます。また、分散トランザクションをサポートするコネクションファクトリのタイプとして、不特定のコネクションファクトリと送信先管理対象オブジェクトのタイプも使用できます (すべてのサポートタイプについては、表 1-1 を参照)。
管理対象オブジェクトの属性は、属性と値の組み合わせで指定します。次に、これらの属性について説明します。
コネクションファクトリ管理対象オブジェクトの属性
コネクションファクトリ (および XA コネクションファクトリ) の管理対象オブジェクトには、表 7-3 に示す属性があります。主に使用する属性は、imqAddressList です。この属性を使用して、クライアントがコネクションを確立するブローカを指定します。「コネクションファクトリの追加」では、コネクションファクトリ管理対象オブジェクトをオブジェクトストアに追加する場合に、この属性を指定する方法について説明します。
コネクションファクトリ属性の詳細およびこれらの属性の使用方法については、『Message Queue Java Client Developer's Guide』と次の Message Queue クラスに関する JavaDoc API ドキュメントを参照してください。com.sun.messaging.ConnectionConfiguration
送信先管理対象オブジェクトの属性
物理的なトピックやキューの送信先を指定する、送信先管理対象オブジェクトには、表 7-4 に示すような属性があります。「トピックまたはキューの追加」では、送信先管理対象オブジェクトをオブジェクトストアに追加する場合に、これらの属性を指定する方法について説明します。
主に使用する属性は、imqDestinationName です。これは、トピックまたはキューの管理対象オブジェクトに対応する物理的な送信先に割り当てる名前です。複数のアプリケーションをサポートするために作成するほかの送信先と区別するために、送信先の説明を指定することもできます。
詳細は、Message Queue クラスの com.sun.messaging.DestinationConfiguration に関する JavaDoc API ドキュメントを参照してください。
表 7-4 送信先管理対象オブジェクトの属性
属性/プロパティ名
データ型
デフォルト値
imqDestinationDescription
文字列型
送信先オブジェクトの説明
imqDestinationName
文字列1
Untitled_Destination_Object
1送信先名には、英数字 (空白文字は含まない) だけを使用できます。送信先名は、英字や、「_」 または「$」で開始する必要があります。
オブジェクトマネージャユーティリティ (imqobjmgr)オブジェクトマネージャユーティリティを使用すると、Message Queue の管理対象オブジェクトを作成および管理することができます。この節では、imqobjmgr コマンドの基本構文、サブコマンドのリスト、imqobjmgr コマンドのオプションの概要について説明します。後続の節では、imqobjmgr サブコマンドを使用して、特定のタスクを実行する方法について説明します。
imqobjmgr コマンドの構文
imqobjmgr コマンドの一般的な構文は、次のとおりです。
-v、-h、および -H オプションを指定する場合、そのコマンド行で指定するサブコマンドは実行できません。たとえば、次のコマンドを入力すると、バージョン情報が表示されますが、list サブコマンドは実行されません。
imqobjmgr のサブコマンド
オブジェクトマネージャユーティリティ (imqobjmgr) には、次の表 7-5 に示すようなサブコマンドが含まれています。
imqobjmgr コマンドのオプションの概要
表 7-6 に、imqobjmgr コマンドのオプションを示します。これらの使用方法については、タスクごとに説明した後続の節を参照してください。
表 7-6 imqobjmgr のオプション
オプション
説明
-f
ユーザーの確認なしで、アクションを実行する
-h
使用方法に関するヘルプを表示する。コマンド行ではそれ以外のことは実行されない
-H
使用方法に関するヘルプ、属性リスト、および例を表示する コマンド行ではそれ以外のことは実行されない
-i fileName
オブジェクトタイプ、検索名、オブジェクト属性、オブジェクトストア属性などのオプションを指定するサブコマンド句の一部またはすべてを含むコマンドファイルの名前を指定する。通常、オブジェクトストア属性などの反復の多い情報に使用される
-j attribute=value
JNDIオブジェクトストアを識別しアクセスするために必要な属性を指定する。「LDAP サーバオブジェクトストア」および「ファイルシステムオブジェクトストア」を参照
-javahome path
使用する代替の Java 2 互換のランタイムを指定する。デフォルトではシステム上のランタイムまたは Message Queue にバンドルされたランタイムを使用する
-l lookupName
管理対象オブジェクトの JNDI 検索名を指定する。この名前は、オブジェクトストアのコンテキスト内で一意であることが必要
-o attribute=value
管理対象オブジェクトの属性を指定する。「コネクションファクトリ管理対象オブジェクトの属性」および「送信先管理対象オブジェクトの属性」を参照
-pre
プレビューモード。コマンドを実行せずに、実行される内容を示す
-r read-only_state
管理対象オブジェクトが読み取り専用オブジェクトかどうかを指定する。値 true は、管理対象オブジェクトが読み取り専用オブジェクトであることを示す。クライアントは読み取り専用管理対象オブジェクトの属性は変更できない。デフォルトでは、読み取り専用の状態は false に設定されている
-s
サイレントモード。出力が表示されない
-t objectType
Message Queue の管理対象オブジェクトのタイプを指定する
q = queue
t = topic
cf = connection factory
qf = queue connection factory
tf = topic connection factory
xcf = XA connection factory (分散トランザクション)
xqf = XA queue connection factory (分散トランザクション)
xtf = XA topic connection factory (分散トランザクション)
e = SOAP 終端1
-v
バージョン情報を表示する。コマンド行ではそれ以外のことは実行されない
1この管理対象オブジェクトのタイプは、SOAP メッセージをサポートするために使用されます (『Message Queue Java Client Developer's Guide』を参照)。
次に、imqobjmgr のサブコマンドを使用する場合に、設定する必要がある情報について説明します。
必要な情報
管理対象オブジェクトに関連する大部分のタスクを実行する場合は、imqobjmgr サブコマンドのオプションとして、次の情報を指定する必要があります。
使用可能なタイプを表 7-6 に示します。
- 管理対象オブジェクトの属性 (特に、add および update サブコマンドで必要)
- 送信先の場合 : ブローカの物理的な送信先の名前。これは imqcmd create dst サブコマンドの -n オプションで指定した名前となる。この名前を指定しない場合、デフォルト名の Untitled_Destination_Object が使用されます。
- コネクションファクトリの場合 : もっとも一般的に使用される属性は、1 つ以上のメッセージサーバアドレスをクライアントの接続先に指定するためのアドレスリスト (imqAddressList) である。この情報を指定しないと、ローカルホストとデフォルトのポート番号 (7676) が使用される。つまり、クライアントはローカルホスト上のポート 7676 のブローカに対してコネクションの確立を試みる。「コネクションファクトリの追加」では、オブジェクトの属性を指定する方法について説明する。
その他の属性については、「コネクションファクトリ管理対象オブジェクトの属性」を参照してください。
- オブジェクトストアの属性
この情報は、ファイルシステムストアと LDAP サーバのどちらを使用するかによって異なりますが、次の属性を設定する必要があります。
オブジェクトストアの属性については、「LDAP サーバオブジェクトストア」および「ファイルシステムオブジェクトストア」を参照してください。
コマンドファイルの使用
imqobjmgr コマンドを使用すると、imqobjmgr サブコマンド句のすべてまたは一部を表すために java プロパティファイルの構文を使用する、コマンドファイルの名前を指定できます。
オブジェクトマネージャユーティリティ (imqobjmgr) と一緒にコマンドファイルを使用すると、オブジェクトストアの属性を指定する場合に特に便利です。なぜなら、オブジェクトストアの属性は複数の imqobjmgr の呼び出しにおいて、同じ内容になる可能性が高く、通常多くの入力作業が必要になるためです。また、コマンドファイルを使用すると、コマンド行で許可されている最大文字数を超えて入力してしまうのを防ぐことができます。
imqobjmgr コマンドファイルの一般的な構文は、次のとおりです (バージョンプロパティは Message Queue 製品ではなくコマンドファイルのバージョンを示す。これはコマンド行オプションではなく、値は常に 2.0 に設定する)。
コマンドファイルを使用する方法の例として、次の imqobjmgr コマンドを検討してください。
imqobjmgr add
-t qf
-l "cn=myQCF"
-o "imqAddressList=mq://foo:777/jms"
-j "java.naming.factory.initial=
com.sun.jndi.ldap.LdapCtxFactory"
-j "java.naming.provider.url=
ldap://mydomain.com:389/o=imq"
-j "java.naming.security.principal=
uid=fooUser, ou=People, o=imq"
-j "java.naming.security.credentials=fooPasswd"
-j "java.naming.security.authentication=simple"
このコマンドは、次の内容を含む MyCmdFile などのファイルにカプセル化することができます。
version=2.0
cmdtype=add
obj.type=qf
obj.lookupName=cn=myQCF
-o "imqAddressList=mq://foo:777/jms"
objstore.attrs.java.naming.factory.initial=¥
com.sun.jndi.ldap.LdapCtxFactory
objstore.attrs.java.naming.provider.url=¥
ldap://mydomain.com:389/o=imq
objstore.attrs.java.naming.security.principal=¥
uid=fooUser, ou=People, o=imq
objstore.attrs.java.naming.security.credentials=fooPasswd
objstore.attrs.java.naming.security.authentication=simple
次に、-i オプションを使用して、このファイルをオブジェクトマネージャユーティリティ (imqobjmgr) に渡すことができます。
コマンドファイルを使用して一部のオプションを指定する一方で、コマンド行を使用してその他のオプションを指定することも可能です。このため、ユーティリティの複数の呼び出しで、同じ内容になるサブコマンド句の一部を、コマンドファイルを使用して指定することができます。たとえば、次のコマンドでは、コネクションファクトリ管理対象オブジェクトを追加する場合に必要なすべてのオプション (ただし、管理対象オブジェクトの保存場所を指定するオプションは除く) が指定されています。
この場合、MyCmdFile ファイルには次の定義が含まれます。
version=2.0
objstore.attrs.java.naming.factory.initial=¥
com.sun.jndi.ldap.LdapCtxFactory
objstore.attrs.java.naming.provider.url=¥
ldap://mydomain.com:389/o=imq
objstore.attrs.java.naming.security.principal=¥
uid=fooUser, ou=People, o=imq
objstore.attrs.java.naming.security.credentials=fooPasswd
objstore.attrs.java.naming.security.authentication=simple
コマンドファイルの別の例は、次の場所で参照できます。
管理対象オブジェクトの追加および削除この節では、コネクションファクトリおよびトピックまたはキューの送信先管理対象オブジェクトをオブジェクトストアに追加する方法について説明します。
注
オブジェクトマネージャユーティリティ (imqobjmgr) は、Message Queue 管理対象オブジェクトだけを一覧表示します。オブジェクトストアに、追加したい管理対象オブジェクトと同じ検索名の Message Queue 以外のオブジェクトが含まれている場合は、追加操作を実行するとエラーが表示されます。
コネクションファクトリの追加
クライアントアプリケーションがブローカへのコネクションを取得できるようにするには、クライアントアプリケーションに必要なコネクションタイプを表している管理対象オブジェクトを追加します。このタイプは、トピックコネクションファクトリかキューコネクションファクトリのどちらかになります。
キューのコネクションファクトリを追加するには、次のようなコマンドを使用します。
imqobjmgr add
-t qf
-l "cn=myQCF"
-o "imqAddressList=mq://myHost:7272/jms"
-j "java.naming.factoryinitial=
com.sun.jndi.ldap.LdapCtxFactory"
-j "java.naming.provider.url=ldap://mydomain.com:389/o=imq"
-j "java.naming.security.principal=
uid=fooUser, ou=People, o=imq"
-j "java.naming.security.credentials=fooPasswd"
-j "java.naming.security.authentication=simple"
上記のコマンドでは、検索名が cn=myQCF で、myHost 上で実行されているブローカに接続し、ポート 7272 で待機する管理対象オブジェクトが作成されます。この管理対象オブジェクトは、LDAP サーバに格納されます。引数としてコマンドファイルに imqobjmgr コマンドを指定すると、同じことを実行できます。詳細は、「コマンドファイルの使用」を参照してください。
注
命名規則 : LDAP サーバを使用して、管理対象オブジェクトを格納する場合、前述の例のように、接頭辞「cn=」が付いた検索名 (cn=myQCF) を割り当てることが重要です。検索名は、-l オプションを使用して指定します。ファイルシステムオブジェクトストアを使用している場合は、cn 接頭辞を使用する必要はありません。ただし、「/」を含む検索名は使用しないでください。表 7-7 を参照してください。
表 7-7 命名規則の例
オブジェクトストアのタイプ
適した名前
使用が禁止されている名前
LDAP サーバ
cn=myQCF
myQCF
ファイルシステム
myTopic
myObjects/myTopic
トピックまたはキューの追加
クライアントアプリケーションがブローカ上の物理的な送信先にアクセスできるようにするには、これらの送信先を指定する管理対象オブジェクトをオブジェクトストアに追加します。
該当する管理対象オブジェクトをオブジェクトストアに追加する前に、物理的な送信先を作成しておくことをお勧めします。コマンドユーティリティ (imqcmd) を使用して、オブジェクトストア内の送信先管理対象オブジェクトによって識別される、ブローカの物理的な送信先を作成してください。物理的な送信先の作成方法については、「コネクション情報の取得」を参照してください。
次のコマンドでは、検索名が myTopic で、物理的な送信先名が TestTopic のトピック送信先を識別する管理対象オブジェクトが追加されます。この管理対象オブジェクトは、LDAP サーバに格納されます。
imqobjmgr add
-t t
-l "cn=myTopic"
-o "imqDestinationName=TestTopic"
-j "java.naming.factory.initial=
com.sun.jndi.ldap.LdapCtxFactory"
-j "java.naming.provider.url=
ldap://mydomain.com:389/o=imq"
-j "java.naming.security.principal=
uid=fooUser, ou=People, o=imq"
-j "java.naming.security.credentials=fooPasswd"
-j "java.naming.security.authentication=simple"
次は同じコマンドです。ただし、管理対象オブジェクトが Solaris のファイルシステムに格納されるという点が異なります。
imqobjmgr add
-t t
-l "cn=myTopic"
-o "imqDestinationName=TestTopic"
-j "java.naming.factory.initial=
com.sun.jndi.fscontext.RefFSContextFactory"
-j "java.naming.provider.url=
file:///home/foo/imq_admin_objects"
たとえば、LDAP サーバの場合、MyCmdFile というコマンドファイルを使用して、サブコマンド句を指定できます。ファイルには、次のテキストが含まれます。
version=2.0
cmdtype=add
obj.type=t
obj.lookupName=cn=myTopic
obj.attrs.imqDestinationName=TestTopic
objstore.attrs.java.naming.factory.initial=
com.sun.jndi.fscontext.RefFSContextFactory
objstore.attrs.java.naming.provider.url=
file:///home/foo/imq_admin_objects
objstore.attrs.java.naming.security.principal=
uid=fooUser, ou=People, o=imq
objstore.attrs.java.naming.security.credentials=fooPasswd
objstore.attrs.java.naming.security.authentication=simple
ファイルを imqobjmgr コマンドに渡す場合は、-i オプションを使用します。
キューオブジェクトを追加する場合は、-t オプションに q を指定することを除いて、まったく同じコマンドを使用します。
管理対象オブジェクトの削除
管理対象オブジェクトを削除するには、delete サブコマンドを使用します。オブジェクトの検索名、タイプ、および場所を指定する必要があります。
次のコマンドでは、検索名が cn=myTopic で、LDAP サーバに格納される、トピックの管理対象オブジェクトが削除されます。
imqobjmgr delete
-t t
-l "cn=myTopic"
-j "java.naming.factory.initial=
com.sun.jndi.ldap.LdapCtxFactory"
-j "java.naming.provider.url=
ldap://mydomain.com:389/o=imq"
-j "java.naming.security.principal=
uid=fooUser, ou=People, o=imq"
-j "java.naming.security.credentials=fooPasswd"
-j "java.naming.security.authentication=simple"
情報の入手オブジェクトストア内の管理対象オブジェクトを一覧表示し、個々のオブジェクトに関する情報を表示するには、list サブコマンドと query サブコマンドを使用します。
管理対象オブジェクトの一覧表示
すべての管理対象オブジェクト、または特定タイプのすべての管理対象オブジェクトを一覧表示するには、list サブコマンドを使用します。次のサンプルコードでは、管理対象オブジェクトが LDAP サーバに格納されることを前提としています。
次のコマンドでは、すべてのオブジェクトが一覧表示されます。
imqobjmgr list
-j "java.naming.factory.initial=
com.sun.jndi.ldap.LdapCtxFactory"
-j "java.naming.provider.url=
ldap://mydomain.com:389/o=imq"
-j "java.naming.security.principal=
uid=fooUser, ou=People, o=imq"
-j "java.naming.security.credentials=fooPasswd"
-j "java.naming.security.authentication=simple"
次のコマンドでは、queue タイプのすべてのオブジェクトが一覧表示されます。
imqobjmgr list
-t q
-j "java.naming.factory.initial=
com.sun.jndi.ldap.LdapCtxFactory"
-j "java.naming.provider.url=
ldap://mydomain.com:389/o=imq"
-j "java.naming.security.principal=
uid=fooUser, ou=People, o=imq"
-j "java.naming.security.credentials=fooPasswd"
-j "java.naming.security.authentication=simple"
単一オブジェクトの情報
管理対象オブジェクトに関する情報を入手するには、query サブコマンドを使用します。オブジェクトの検索名、および管理対象オブジェクト (初期コンテキストおよび場所など) を含むオブジェクトストアの属性を指定する必要があります。
次の例では、query サブコマンドを使用して、myTopic という検索名のオブジェクトに関する情報を表示します。
imqobjmgr query
-l "cn=myTopic"
-j "java.naming.factory.initial=
com.sun.jndi.ldap.LdapCtxFactory"
-j "java.naming.provider.url=
ldap://mydomain.com:389/o=imq"
-j "java.naming.security.principal=
uid=fooUser, ou=People, o=imq"
-j "java.naming.security.credentials=fooPasswd"
-j "java.naming.security.authentication=simple"
管理対象オブジェクトの更新管理対象オブジェクトの属性を変更するには、update コマンドを使用します。検索名とオブジェクトの場所を指定する必要があります。-o オプションを使用して、属性値を変更します。
このコマンドでは、トピックのコネクションファクトリを表す管理対象オブジェクトの属性が変更されます。
imqobjmgr update
-t tf
-l "cn=MyTCF"
-o imqReconnectAttempts=3
-j "java.naming.factory.initial=
com.sun.jndi.ldap.LdapCtxFactory"
-j "java.naming.provider.url=
ldap://mydomain.com:389/o=imq"
-j "java.naming.security.principal=
uid=fooUser, ou=People, o=imq"
-j "java.naming.security.credentials=fooPasswd"
-j "java.naming.security.authentication=simple"