4

私は今、これについてしばらくの間、ぐるぐる回っています。提供されたチャネル テーブル ファイルを使用して、分散キュー マネージャーに接続しようとしています。サーバーで環境変数 MQCHLLIB と MQCHLTAB を指定すると、これを機能させることができます。ただし、IBM のドキュメントには、.net 構成ファイルがこれらの変数をオーバーライドできると記載されています。

これが私のweb.configファイルに入れたものです:

...
<configSections>
   <section name="CHANNELS" type="System.Configuration.NameValueSectionHandler" />
</configSections>

<CHANNELS>
   <add key="ChannelDefinitionDirectory" value="C:\temp"></add>
   <add key="ChannelDefinitionFile" value="DSM_MOM_TEST.tab"></add>
</CHANNELS>
...

そして、実行中のコードは次のとおりです。

Hashtable properties = new Hashtable();
//Add managed connection type to parameters.
const String connectionType = MQC.TRANSPORT_MQSERIES_CLIENT;
properties.Add(MQC.TRANSPORT_PROPERTY, connectionType);
return new MQQueueManager(queueManagerName, properties);

queueManagerName は、汎用キュー マネージャ「*Q101T」に設定されます。

ただし、これは機能せず、次のエラーが返されます: 2058 MQRC_Q_MGR_NAME_ERROR

環境変数以外にこれを機能させる方法に関するドキュメントを見つけることができませんでした。標準の mqclient.ini は、web.config のチャネル スタンザによってオーバーライドされる必要があります。

コードで見逃したものはありますか? どんなヒントでも大歓迎です。

編集: connectionType を MQC.TRANSPORT_MQSERIES_MANAGED に変更しましたが、取得していたエラーを回避しています。ただし、I/O エラーが返されるようになりました。

System.IO.IOException はユーザー コードによって処理されませんでした Message="I/O エラーが発生しました。" Source="amqmdnet"
StackTrace: IBM.WMQ.MQChannelTable.CreateChannelEntryLists(MQChannelListEntry nameList) で

これはhttps://www-304.ibm.com/support/docview.wss?uid=swg1IC69174に関連している可能性が最も高いと思うので、ミドルウェア担当者がこれに該当するかどうかを確認し、できれば提供してくれるのを待っています新しい .TAB ファイルで...

Edit2 これは問題ではないようです。MQ トレースを実行しましたが、AMQCLCHL.TAB ファイルが見つからないためにエラーが発生しています。なぜまだこのファイルを探しているのかわかりません。web.config で指定されたチャネル テーブルを使用する必要があります。これらの値を取得しない理由を知っている人はいますか?

4

1 に答える 1

0

.Net 構成ファイルは管理されたクライアント接続タイプにのみ使用されるため、管理モードへの切り替えは間違いなく正しい方向への一歩でした。問題は、アプリケーションが実際にマネージド モードで実行されているかどうかです。Infocenter の「使用する接続タイプの定義」セクションに説明されている決定ツリーがあります。管理された接続が管理されていない接続にフォールバックする場合があることに注意してください。このセクションを実行して、これらのケースのいずれかに該当するかどうかを確認することをお勧めします.

または、mqclient.ini ファイルでチャネル テーブルを設定してみてください。この値は、.Net 構成ファイルによってオーバーライドされない場合に使用されます。ここでの値の設定が機能する場合、.Net 構成ファイルの値が無視されていることが確認されます。これは、おそらくアプリケーションが非管理モードで実行されているためです。

于 2011-04-11T13:40:22.413 に答える