2

非常に標準的なメカニズムでメッセージをリモート JMS キューに発行しようとしています。

TopicConnection tc = null;
TopicSession ts = null;
TopicPublisher tp = null;
Properties p = new Properties();
String providerUrl = "iiop://servername:9810";
String contextFactory = "com.ibm.websphere.naming.WsnInitialContextFactory".trim();
p.put(javax.naming.Context.PROVIDER_URL, providerUrl );
p.put(javax.naming.Context.INITIAL_CONTEXT_FACTORY, contextFactory );
InitialContext ct = new InitialContext(p);

{                       
Topic topic = (Topic)ct.lookup( "jms/customer_event" );
TopicConnectionFactory tcf = (TopicConnectionFactory)ct.lookup( "jms/TopicFactory2" );
tc = tcf.createTopicConnection();
....
..
..
}

現在、Topic および TopicConnectionFactory ルックアップは問題ありませんが、 になるとtcf.createTopicConnection()、次のようにスローされます。

javax.jms.JMSException: MQJMS2005: failed to create MQQueueManager for 'servername:QMGR1'
Inner exception(s):
com.ibm.mq.MQException: MQJE001: Completion Code 2, Reason 2059
java.net.ConnectException: Connection refused: connect

MQ エクスプローラーを開きましたが、トピックはリモート キュー マネージャーに存在します。TopicCoonectionFactoryTopicFactory2もキュー マネージャーに存在するはずですか? そうではないからです。エラーの原因は何ですか?

4

2 に答える 2

2

接続時には、ホスト、ポート、およびチャネルの詳細が正しい必要があります。ホストまたはポートが間違っている場合、TCP ソケットは拒否されます。チャネル名が間違っている場合、キュー マネージャーは接続を拒否し、ソケットを閉じます。すべての詳細が正しくても、キュー マネージャーのリスナーが実行されていない可能性があります。

接続がキュー マネージャーまで到達している場合は、[WMQ Install dir]/qmgrs/[QMgr name]/errors/AMQERR01.LOGファイルにエラーがあります。接続が WMQ に到達しても、キュー マネージャーの名前を解決できないか、間違った QMgr を指定している場合、エラーは になります[WMQ Install dir]/errors/AMQERR01.LOG。これらのいずれにもエントリがない場合、接続は WMQ に到達していないため、リスナーまたはネットワークを確認する必要があります。

于 2012-08-01T00:11:21.833 に答える
0

2059 接続が拒否された場合、ネットワーク エラーまたは MQ サーバーのホスト名やポートの typeo が原因である可能性が高くなります。WebSphere の設定とネットワーク接続を再確認してください。

ConnectException の JavaDoc にも、このhttp://docs.oracle.com/javase/6/docs/api/java/net/ConnectException.htmlが記載されています

ソケットをリモート アドレスおよびポートに接続しようとしたときにエラーが発生したことを通知します。通常、接続はリモートで拒否されました (たとえば、リモート アドレス/ポートでリッスンしているプロセスはありません)。

于 2012-08-01T00:01:45.377 に答える