我们在遗留项目中使用JacORB 2.3.0与Java 6和JBoss 5.1.0。CORBA基础设施和旧版本的ORB、Java和JBoss都是给定的,并且不会更改。
在迁移项目之后(应用程序最初部署在单独的J2EE应用服务器中,但现在使用部分Java EE 5和一个独立的Java应用程序迁移到JBoss中的一个应用程序中),我们现在遇到的情况是,来自JBoss内部的CORBA请求导致org.omg.CORBA.OBJECT_NOT_EXIST
异常。
我通过编写一个小测试类来验证这种情况,并让它通过独立的Java程序从JBoss外部运行一次,通过JBoss的JMX控制台从MBean内部运行一次。在第一种情况下,一切正常,在第二种情况下,我得到了错误。
我已经深入研究了一些生成的代码和ORB代码,并发现当存根区分本地调用和远程调用时,它会找到一个POA并进行本地调用,尽管该请求的相反部分位于单独的JVM进程中。
有没有人知道是什么原因导致的,我应该在哪里进行更深入的研究,或者可能能够配置一些东西?甚至一个变通方法也可以(比如避免本地调用),因为这些调用在性能方面并不重要。
结果是,有一个在本地注册的CORBA服务,但是没有它的实现可用。所以这是一个组装正确部署工件的问题。