4

一見単純な Java コードからトピック パブリッシャーを作成しようとして、進行中の問題が発生しています。私の WMQ は社内で個別に管理されているため、直接管理することはできません。

SSL 経由ではあるがかなり標準的な Java コードを使用して、を作成しTopicConnection、次にを作成して、トピックに接続しようとしました。ただし、SSLの有無にかかわらず同じ問題があります。私はかなり確信しています。TopicSessionTopicPublisher

オンラインで

this.topicPublisher = this.topicPublisherSession.createPublisher(this.topic);

WMQ 例外は次のように発生します

Caused by: com.ibm.mq.MQException: JMSCMQ0001: WebSphere MQ call failed with compcode '2' ('MQCC_FAILED') reason '2035' ('MQRC_NOT_AUTHORIZED').
at com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:209)

WMQ 管理者は、SYSTEM.BASE.TOPIC. ただし、これは会社のリスク ポリシーによって禁止されています。

ベース トピックへのアクセスが必要な理由を尋ねられましたが、もちろんそのアクセスは必要ありません。トピックに公開するだけです。

WMQ の専門家は他にアイデアを持っていますか? 本当にありがとう。

4

1 に答える 1

5

MQ は、パブリッシュ/サブスクライブを管理するためのトピック ツリーを維持します。デフォルトでは、トピック ツリーへの管理者以外のユーザーのアクセスは許可されていません。トピック ツリーのルートは、SYSTEM.BASE.TOPIC から属性を解決します。

アプリケーションがトピックを使用してパブリッシャーを作成しようとすると、MQ は指定されたトピック文字列を使用して権限チェックを行います。MQ はトピック ツリーを検索して、指定されたトピック文字列に一致するノードを探します。一致が見つかった場合、発行または購読の権限が決定されます。ユーザーが十分な権限を持っている場合、パブリッシャーの作成呼び出しは成功します。一致するノードがない場合、MQ はトピック ツリーのルートに移動して権限を決定します。

あなたの場合、アプリケーションは、トピック ツリーで定義されたどのノードとも一致しないトピック文字列を指定しています。MQ は、ルートで権限を判別しようとしました。パブリッシュ権限がないため、呼び出しは 2035 理由コードで失敗しています。

では、何ができるでしょうか?SYSTEM.BASE.TOPIC へのアクセスを提供する代わりに、管理者に依頼して、アプリケーションが使用しているトピック ストリングを使用してトピックを作成し、publish権限を提供してください。

于 2015-04-30T11:23:17.063 に答える