我有一个试图在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
答案 0 :(得分:0)
使用在源代码之外未记录的功能(至少就我能够找到的那样)来说,异常来自。这是将InvokerURL指定为在客户端解析的系统属性的地方(如果JBoss服务器在NAT中,该功能非常有用)。
当客户端没有在其系统属性中定义属性时,它会抛出NPE而不是报告它收到的InvokerURL的问题。