2012-10-25 71 views
1

我写了一个简单的java程序来执行与HornetQ服务器的远程连接。IntialContext实例化失败

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] 

这个合法的情况下,实例化的InitialContext本身应该如果JBoss服务器(或任何其他应用服务器)已关闭失败?

如果这是有效的情况下,

我还有一个独立的应用程序(这不是任何服务器,独立的Java应用程序上)

这里面独立的应用程序,我想创建IntialContext确切行作为相同以上。

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

完全混淆了这个IntialContext的工作原理,任何输入将不胜感激。

更新:

是否有任何罐子一些东西,可能会影响InitialContext的行为?

回答

3

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

是的。

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

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

+0

这种行为真的吓到我了。我的机器上只有服务器和客户端。我已将调试点用于查看行为。我故意杀死JBoss服务器并运行独立应用程序。在为JMS创建initialcontext之前的独立应用程序中,我们正在为EJB创建InitialContext。这些都是相关的吗? – kosa

+0

@Nambari请回答这个问题。如果代码不失败,您如何知道服务器停机?之后会失败吗?如果它完全没有失败,那么服务器必须是* *,并且这必须是一个非问题。 – EJP

+0

我正在停止服务器,然后通过放置一些调试指针来运行我的独立客户端(简单java程序)。在使用上面的initialcontext寻找JMS队列时,它确实会失败,消息类似陈旧的连接,但不在新的IntialContext(env)处; – kosa

1

看起来就像当你stop服务器并运行心不是停止,而在transition,因为其中确实得到initialContext 但后来当服务器转换完成上失败的standalone1
服务器。

所以一个问题:你如何停止服务器?杀死进程或一些命令行脚本停止?使用eclipse?或者是什么?

当您停止服务器时,使用netstat -a来查看windows 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.

不是有效的情况下,也不应该发生。

相关问题