3

c# を使用して IBM WMQ にアクセスするコンソール アプリケーションを開発しています。IBM Message Service Client for .net (XMS) と WebSphere MQ Client を使用しています。コード例は次のとおりです。

            XMSFactoryFactory xff = XMSFactoryFactory.GetInstance(XMSC.CT_WMQ);
            IConnectionFactory cf = xff.CreateConnectionFactory();
            cf.SetStringProperty(XMSC.WMQ_HOST_NAME, "host");
            cf.SetIntProperty(XMSC.WMQ_PORT, 1445);
            cf.SetStringProperty(XMSC.WMQ_CHANNEL, "channel");
            cf.SetIntProperty(XMSC.WMQ_CONNECTION_MODE, XMSC.WMQ_CM_CLIENT);
            cf.SetStringProperty(XMSC.WMQ_QUEUE_MANAGER, "queueManager");
            cf.SetIntProperty(XMSC.WMQ_BROKER_VERSION, XMSC.WMQ_BROKER_V1);
            cf.SetStringProperty(XMSC.USERID, @"userid");
            cf.SetStringProperty(XMSC.PASSWORD, @"");

            IConnection conn = cf.CreateConnection();
            conn.ExceptionListener = new ExceptionListener(OnXMSExceptionReceived);
            Console.WriteLine("connection created");
            ISession sess = conn.CreateSession(false, AcknowledgeMode.AutoAcknowledge);

次のエラーが発生し続けました: CWSMQ0044E: ユーザーは、キュー・マネージャーへの接続を許可されていません。アプリケーションが許可なしでキュー マネージャーに接続しようとしました。このユーザーの適切な権限がキュー・マネージャーに存在することを確認してください。

ただし、Spring 統合を使用して同じ MQ にアクセスすることは問題ありません。春の統合の設定は次のとおりです。

<bean id="connectionFactoryWBI" class="com.ibm.mq.jms.MQQueueConnectionFactory">
    <property name="hostName" value="${hostName}" />
    <property name="port" value="${port}" />
    <property name="queueManager" value="${queueManager}" />
    <property name="channel" value="${channel}" />
    <property name="transportType" value="1" />
</bean>

<bean id="connectionFactoryWBIWithCredentials" class="org.springframework.jms.connection.UserCredentialsConnectionFactoryAdapter">
    <property name="targetConnectionFactory" ref="connectionFactoryWBI" />
    <property name="username" value="${username}" />
</bean>

XMS と .net は初めてで、MQ に接続するための認証情報を渡す方法がわかりません。どんな推奨事項も大歓迎です!

4

1 に答える 1

3

XMS .NET クライアントと MQ JMS クライアントの動作はほとんど異なります。キュー マネージャーに接続するとき、XMS .NET はまず現在ログインしている Windows ユーザー ID を送信し、次にアプリケーションで指定されたユーザー ID を送信します。これら 2 つのユーザー ID が同じ場合、接続が作成されます。しかし、それらが異なる場合、CWSMQ0044Eエラーが発生します。これは基本的に MQ 理由コード 2035、MQRC_NOT_AUTHORIZED です。ただし、MQ JMS の場合、アプリケーション指定のユーザー ID のみが送信され、Windows ユーザー ID は送信されません。したがって、エラーは表示されません。

XMS .NET の使用時に発生する問題に対処するには、いくつかの方法があります
。1) MQ サーバー側のセキュリティ出口を使用します。
2) チャネル認証レコード (MQ v7.1 以降で使用可能)

この問題については、ここで議論されています。

于 2012-11-28T04:28:02.457 に答える