0

这就是我一天以来一直在反对的事情。
我有一个旧版本的 jboss (jboss4),我在其中启动了一些代码来连接到我作为客户端运行的 sonic mq (我认为是 7.6) 的实现。我正在运行 java 1.6.0_23。话虽如此,我看到了我似乎无法弄清楚的非常奇怪的行为。

当我的进程开始时,我加载了与 sonic mq 服务器建立连接所需的所有 jndi 道具,然后我像这样调用

Context ic = new InitialContext(jndiEnv);

但是,我当时没有看到我的线鲨上没有交通,这让我感到困惑。最终这会超时给我例外

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

真正的问题是我从同一台服务器上的独立 jar(而不是从 jboss 中)运行我的进程并且连接正常?

4

2 回答 2

4

嘿任何遇到这个的人......所以我解决了我的问题并认为我会分享它......

事实证明,即使 sonic 技术团队说他们的代码从不查看 jvm 变量 javax.ssl.keystore ......它确实......

它被设置为这样 javax.ssl.keystore=C:something 这将导致初始上下文生成挂起直到超时。但是这个 javax.ssl.keystore=C:\something 会起作用。如果它没有设置它也可以工作......

我本来希望会抛出某种异常:?

我希望这对某人有所帮助!:)

谢谢J

于 2012-02-18T23:16:23.930 回答
0

两件事:
你能在 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 回答