我有一个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的问题,这是我仍然想知道的事情。