RMI,Wildfly 10x,Spring:NoClassDefFoundError:org.omg.CORBA.COMM_FAILURE

时间:2016-10-04 13:05:29

标签: java spring wildfly rmi

我有一个Spring-Boot应用程序,它将一些接口暴露给其他项目。它的基本过程经常在项目结构中进行试验和测试,所以这不应该是一个“简单”的RMI问题,比如缺少序列化或错误的注册表。

此项目(在java7上编码)和较旧的项目(也是java7)将部署在wildfly 10.x容器中。

基本上,我们的旧应用程序计划与Spring-Boot应用程序进行对话,以获取特定的数据集。启动应用程序时,bean正确实例化,基本连接似乎没问题。但是,当使用完全有效的呼叫时,我得到了这个:

  

错误[io.undertow.request](默认任务-5)UT005023:对/ servlet / Foo的异常处理请求:org.springframework.web.util.NestedServletException:处理程序处理失败;嵌套异常是java.lang.NoClassDefFoundError:org / omg / CORBA / COMM_FAILURE

我尝试调试应用程序,当使用违规方法调用时,正在触发远程类并正常工作,返回值与预期一致,并返回到spring上下文。

奇怪的是Stack Trace的这一部分:

  

java.lang.NoClassDefFoundError:org / omg / CORBA / COMM_FAILURE       在org.springframework.remoting.rmi.RmiClientInterceptorUtils.isCorbaConnectFailure(RmiClientInterceptorUtils.java:229)       在org.springframework.remoting.rmi.RmiClientInterceptorUtils.isConnectFailure(RmiClientInterceptorUtils.java:213)       在org.springframework.remoting.rmi.RmiClientInterceptor.isConnectFailure(RmiClientInterceptor.java:282)       在org.springframework.remoting.rmi.RmiClientInterceptor.doInvoke(RmiClientInterceptor.java:347)       在org.springframework.remoting.rmi.RmiClientInterceptor.invoke(RmiClientInterceptor.java:259)

因为当我尝试访问RmiClientInterceptorUtils.java:229时,Eclipse告诉我229不是有效的行号。这将使我相信服务器和客户端之间的Spring webMVC存在版本差异。即使在更改版本号(现在使用3.2.8.RELEASE of spring-webmvc)之后,这仍然存在,但错误仍然存​​在。

我检查了是否存在依赖性问题,但CONN_FAILURE是rt.jar的一部分,据我所知,应该存在于每个java项目中。进一步测试显示:

  • 已检查的例外情况正常转移
  • 原始值(如布尔值)正确传输
  • 复杂对象导致抛出异常

我很感激对此事的任何帮助,因为我无法解释或纠正这一点。 感谢。

注意: 找到了引发异常的一般原因 - 一个类缺少Serializable接口。但是,这并没有回答为什么COMM_FAILURE引发了NoClassDefFoundError的问题,这是我仍然想知道的事情。

0 个答案:

没有答案