1

WMQ 経由で別の Web アプリケーションに接続するように Web アプリケーションを構成しています。

両方のアプリケーションが同じローカル サーバーに接続されている場合、MQ 構成はローカルで正常に動作します。

しかし、各アプリケーションを独自のサーバーにデプロイすると、CCDT エラーが発生します。

サーバー 1 - リモート JNDI 経由でサーバー 2 に接続します

サーバー 2 - WMQ 接続ファクトリ、キュー、およびアクティベーション スペックを保持します。

テストすると、サーバー 1 のログに、以下の例外メッセージが表示されます。サーバー 2 が CCDT 経由で MQ に接続するように構成されているのに、サーバー 1 が TAB ファイルを探しているのはなぜでしょうか。また、サーバー 2 には例外が含まれていません。

私が間違って行った構成について何か考えはありますか?

Caused by: com.ibm.mq.jmqi.JmqiException: CC=2;RC=2278;AMQ9516: File error occurred. [1=java.io.FileNotFoundException[\ccdt\CCDT.tab (The system cannot find the path specified.)],3=file:/ccdt/CCDT.tab]
    at com.ibm.mq.jmqi.system.internal.CCDT.parse(CCDT.java:333)
    at com.ibm.mq.jmqi.system.internal.CCDT.<init>(CCDT.java:191)
    at com.ibm.mq.jmqi.remote.internal.system.RemoteCCDT.<init>(RemoteCCDT.java:68)
    at com.ibm.mq.jmqi.remote.internal.RemoteFAP.getCcdt(RemoteFAP.java:413)
    at com.ibm.mq.jmqi.remote.internal.RemoteFAP.jmqiConnect(RemoteFAP.java:1580)
    at com.ibm.mq.jmqi.remote.internal.RemoteFAP.jmqiConnect(RemoteFAP.java:1286)
    at com.ibm.msg.client.wmq.internal.WMQConnection.<init>(WMQConnection.java:367)
4

2 に答える 2

0

ここで混乱が生じたと思います。

サーバー 2 を指す初期コンテキストを作成するリモート JNDI 呼び出しは、サーバー 2 で接続ファクトリを検索していることを意味します。

したがって、サーバー 2 の接続ファクトリーが CCDT で構成されている場合、サーバー 1 がサーバー 2 からの接続ファクトリーを使用して接続を試みると、JNDI の定義に含まれている CCDT も使用されます。

それは理にかなっていますか?

次のいずれかをお勧めします。

a) CCDT が構成されていない別の名前で、リモート JNDI に 2 番目の接続ファクトリーを作成します。したがって、たとえば「ccdtCF」と「cf」を使用できます。次に、適切な cf を使用するようにアプリケーション サーバー上のアプリを構成します。

b) 必要に応じて構成された各サーバーでローカル JNDI を使用します。

c) すべてのクライアントがすべてのサーバーで同じ方法で接続されていることを確認します。すべての CCDT (および CCDT は同じファイル システムの場所にある必要があります) または CCDT 接続なしのいずれかです。

于 2014-07-03T09:18:49.817 に答える
0

次の解決策があります。

  • リモート JNDI を使用することもできますが、必要なすべてのリソースがローカル ノードでも同じ場所にある必要があるため、この場合、\ccdt\CCDT.tab ファイルが同じパスで利用可能である必要があります。
  • 接続ファクトリーを再構成して、ccdt の代わりにすべての詳細を含めます。
  • ローカル リソース定義を使用する - リモートだけでなく両側でリソースを作成し、ローカル サーバー/クラスターから取得します。したがって、server1 がメッセージを送信している場合は、コネクション ファクトリを作成し、そこにキューを作成する必要があります。また、クラスター (server2) に MDB がある場合は、そこにキューとアクティベーション スペックを作成する必要があります。

通常、リソースを使用しているアプリケーションに対してローカルにリソースを作成する方が簡単です。

于 2014-07-03T09:30:54.200 に答える