【问题标题】:NamingException when trying RMI/HTTP from JBoss 4.0.1 to 4.2.3从 JBoss 4.0.1 到 4.2.3 尝试 RMI/HTTP 时出现 NamingException
【发布时间】:2023-03-30 09:45:01
【问题描述】:

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

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

不过,与此同时,我想了解它失败的原因,以及我是否可以采取任何措施来解决它。

现在它在 new 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

【问题讨论】:

    标签: java jboss ejb rmi


    【解决方案1】:

    异常来自使用源代码之外未记录的功能(至少据我所知)。这是将 InvokerURL 指定为在客户端解析的系统属性的地方(如果 JBoss 服务器位于 NAT 内,该功能很有用)。

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

    【讨论】:

      猜你喜欢
      • 2013-11-17
      • 1970-01-01
      • 2023-04-02
      • 2011-11-15
      • 1970-01-01
      • 2020-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多