从JBoss 4.0.1到4.2.3尝试RMI / HTTP时出现NamingException

时间:2009-02-12 13:35:41

标签: java jboss ejb rmi

我有一个试图在JBoss 4.2.3 GA上运行的EJB上调用方法的应用程序。

该应用程序是一个遗留应用程序;当它访问在JBoss 4.0.1上运行的原始服务器时它可以工作。它的RMI代码在JBoss 4.0.1的jbossall-client.jar中。它试图调用一个方法,它将为其提供新代码以允许它自己更新。所以我必须让它按原样运行;我可以做的唯一更改是在服务器端。在最坏的情况下,我可能需要设置一个4.0.1 JBoss服务器,它可以处理旧版本的这些请求。

与此同时,我想了解它失败的原因,以及我能做些什么来修复它。

现在它在新的InitialContext()中失败了。

这是堆栈跟踪:

javax.naming.NamingException: Failed to retrieve Naming interface [Root exception is java.lang.NullPointerException]
        at org.jboss.naming.HttpNamingContextFactory.getInitialContext(HttpNamingContextFactory.java:69)
        at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:667)
        at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:247)
        at javax.naming.InitialContext.init(InitialContext.java:223)
        at javax.naming.InitialContext.<init>(InitialContext.java:197)
        at Main.main
Caused by: java.lang.NullPointerException
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1820)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1908)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1832)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348)
        at org.jboss.proxy.ClientContainer.readExternal(ClientContainer.java:148)
        at java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1755)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1717)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1908)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1832)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348)
        at org.jboss.invocation.MarshalledValue.get(MarshalledValue.java:78)
        at org.jboss.naming.HttpNamingContextFactory.getNamingServer(HttpNamingContextFactory.java:123)
        at org.jboss.naming.HttpNamingContextFactory.getInitialContext(HttpNamingContextFactory.java:65)
        ... 17 more

1 个答案:

答案 0 :(得分:0)

使用在源代码之外未记录的功能(至少就我能够找到的那样)来说,异常来自。这是将InvokerURL指定为在客户端解析的系统属性的地方(如果JBoss服务器在NAT中,该功能非常有用)。

当客户端没有在其系统属性中定义属性时,它会抛出NPE而不是报告它收到的InvokerURL的问题。