0

これが私が1日頭を悩ませてきたものです。
私は古いバージョンの jboss (jboss4) を使用しており、その中からいくつかのコードを起動して、クライアントとして実行している sonic mq (7.6 だと思います) の実装に接続しています。Java 1.6.0_23 を実行しています。そうは言っても、私には理解できないような非常に奇妙な動作が見られます。

プロセスが開始したら、sonic mq サーバーへの接続を確立するために必要なすべての jndi props をロードし、次のように呼び出します。

Context ic = new InitialContext(jndiEnv);

しかし、その時点でワイヤシャークにトラフィックが見られず、困惑しています。最終的にこれはタイムアウトになり、例外が発生します

javax.naming.NamingException.  Root exception is com.sonicsw.mf.comm.ConnectTimeoutException: Timeout occured while attempting to connect

歯の本当のキックは、同じサーバー上で (jboss 内ではなく) スタンドアロンの jar からプロセスを実行し、正常に接続することです。

4

2 に答える 2

4

これに出くわした人は誰でも...だから私は私の問題を解決し、それを共有すると思った...

ソニックテックチームでさえ、彼らのコードは決して jvm 変数 javax.ssl.keystore を見ないと言っていました...そうです...

この javax.ssl.keystore=C:something のように設定されていたため、初期コンテキスト生成がタイムアウトになるまでハングしていました。ただし、この javax.ssl.keystore=C:\something は機能します。設定されていない場合も同様に機能します...

私はある種の例外がスローされることを期待していたでしょう:?

これがいつか誰かに役立つことを願っています!:)

ありがとうJ

于 2012-02-18T23:16:23.930 に答える
0

2 つのこと:
JBoss サーバーのクラスパスで必要な jar を確認できますか?
Sonic ディレクトリ サービスの初期コンテキスト オブジェクト参照を取得するために必要な Sonic MQ のドメイン名プロパティを設定していますか?

private Properties getConnectionEnv(String initialContextFactory,String providerURL, String domain, String userName, String password) {
  Properties connectionEnv = new Properties();
  if (initialContextFactory != null && initialContextFactory.length() != 0) {
    connectionEnv.put(Context.INITIAL_CONTEXT_FACTORY,initialContextFactory);
  }
  if (providerURL != null && providerURL.length() != 0)
    connectionEnv.put(Context.PROVIDER_URL, providerURL);
  if (domain != null && domain.length() != 0)
    connectionEnv.put("com.sonicsw.jndi.mfcontext.domain", domain); 
  if (userName != null && userName.length() != 0) {
    connectionEnv.put(Context.SECURITY_PRINCIPAL, userName);
    connectionEnv.put(Context.SECURITY_CREDENTIALS, password);
  }
  return connectionEnv;
}

これがあなたに役立つことを願っています..

GK

于 2012-01-13T16:20:09.680 に答える