5

私はいくつかの JMS 送受信作業を行う Java アプリケーションを持っています。しかし、興味深い問題を見つけました。たとえば、java.naming.provider.url には次のように設定します。

tcp://hostnameA.foo.bar:7222

しかし、私は以下のようなエラーを得ました。完全修飾ドメイン名ではなく、ホスト名のみが含まれています。

javax.jms.JMSException: Failed to connect to the server at tcp://hostnameA:7222

ホスト ファイルに手動で hostnameA を追加しない限り、Tibco サーバーに接続できません。

どうすれば修正できますか?

前もって感謝します。

4

2 に答える 2

10

EMS サーバーには、独自の組み込み JNDI サーバーがあります。接続時に実際に行っていることは、1) EMS:s JNDI サーバーに接続ファクトリー定義を照会し、2) 返されたファクトリーに基づいて接続を作成することです。これは、java.naming.provider.url を使用しているという事実によって暗示されます。

EMS サーバーで、使用している接続ファクトリーの接続ファクトリー定義 (factories.conf) を変更します。新規インストール時のデフォルト ファクトリ (QueueConnectionFactory など) のデフォルト定義は "tcp://7222" であり、取得時にサーバーによって "tcp://hostname:7222" に置き換えられます。この定義を「tcp://hostname.myfqdn.com:7222」などに変更すると、うまくいくはずです。

接続を直接作成して JNDI サーバーを完全にバイパスすることもできますが、サーバーから返される接続ファクトリの定義には、負荷分散とフォールト トレラントのペア、SSL 設定に関する情報が含まれているか、まったく異なるまた、EMS 管理者は、クライアントがコードや構成を変更することなく、接続ファクトリの定義を変更できます。

于 2011-10-29T11:03:29.737 に答える