1

我编写了一个简单的 java 程序来执行与 HornetQ 服务器的远程连接。

Properties p = new Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory");
p.put(Context.PROVIDER_URL, "remote://myIP:4447");
p.put(Context.SECURITY_PRINCIPAL, "user");
p.put(Context.SECURITY_CREDENTIALS, "pwd");

final InitialContext iniCtx = new InitialContext(p);

如果 JBoss 服务器关闭, final InitialContext iniCtx = new InitialContext(p);语句本身会抛出

javax.naming.NamingException: Failed to create remoting connection [Root exception is java.lang.RuntimeException: Operation failed with status WAITING]

这是有效的情况吗,如果 JBoss 服务器(或任何其他应用程序服务器)关闭,实例化 InitialContext 本身应该失败吗?

如果这是有效的情况,

我有另一个独立的应用程序(这不在任何服务器上,独立的 java 应用程序)

在这个独立的应用程序中,我试图创建IntialContext与上面完全相同的行。

当 JBoss 服务器关闭时,InitialContext实例化不会失败。

对这个 IntialContext 的工作原理完全感到困惑,任何输入都将不胜感激。

更新:

是否有任何罐子可能会影响 InitialContext 行为?

4

2 回答 2

3

这是有效的情况吗,如果 JBoss 服务器(或任何其他应用程序服务器)关闭,实例化 InitialContext 本身应该失败吗?

是的。

如果这是有效的情况,我有另一个独立的应用程序(这不在任何服务器上,独立的 java 应用程序)。在这个独立的应用程序中,我正在尝试创建与上面完全相同的 IntialContext 行。当 JBoss 服务器关闭时,InitialContext 实例化不会失败。

真的。难以置信。它在做什么呢?如果它没有失败,你怎么知道服务器已经关闭?

于 2012-10-28T07:45:30.243 回答
1

看起来当您stop运行服务器并运行时standalone1,服务器并没有
停止,而是transition因为它确实得到了initialContext 但稍后在服务器转换完成时失败。

所以一个问题:你如何停止服务器?杀死进程或一些命令行脚本来停止?使用日食?要不然是啥?

当您停止服务器时,请使用netstat -awindows dos 来查看正在侦听的所有端口。Jboss 端口可能仍在侦听。确认端口没有被监听,然后运行你的独立,你应该得到错误InitialContext

我想要做的底线就是这样if this is valid case, I have another standalone app (this is not on any server, standalone java application). Inside this standalone app, I am trying to create IntialContext exact same lines as above. When JBoss server is down, InitialContext instantiation is not failing.

不是一个有效的案例,不应该发生。

于 2012-10-30T08:06:05.773 回答