【问题标题】:ClassCastException When Calling an EJB Remotely that Exists on Same Server远程调用存在于同一服务器上的 EJB 时发生 ClassCastException
【发布时间】:2010-06-17 03:59:27
【问题描述】:

我有 2 个 ejb。 Ejb-A 调用 Ejb-B。他们不在同一个耳朵里。

为了可移植性,Ejb-B 可能存在也可能不存在于同一台服务器上。 (有一个外部属性文件具有 Ejb-B 的提供程序 URL。我无法控制。)

示例代码:在 Ejb-A 中

EjbBDelegate delegateB = EjbBDelegateHelper.getRemoteDelegate(); // lookup from list of URLs from props... 
BookOfMagic bom = delegateB.getSomethingInteresting();

用例/结果

  1. 当 Ejb-B 不存在 与 Ejb-A 在同一台服务器上时,一切正常。 (它通过 URL 循环)
  2. 当 Ejb-B 确实存在在同一台服务器上,并且 Ejb-A 恰好在同一台服务器上调用 Ejb-B 时,一切正常。
  3. 当 Ejb-B DOES EXIST 在同一台服务器上,而 Ejb-A 在另一台服务器上调用 Ejb-B 时,我得到:

javax.ejb.EJBException:嵌套异常是:java.lang.ClassCastException:$Proxy126 java.lang.ClassCastException: $Proxy126

我正在使用 Weblogic 10.0、Java 5、EJB3

基本上,如果服务器上存在 Ejb-B,则只能在该服务器上调用它。

这让我相信该类正在由本地类加载器加载(在部署时?),然后当远程调用时,另一个类加载器正在加载它。 (导致异常)但它应该可以工作,因为它应该被序列化到目标类加载器中......

我做错了什么??

另外,在本地复制时,Ejb-A 会偏爱同一服务器上的 Ejb-B,因此很难复制。但在其他机器上并非如此。

注意:这一切都适用于 EJB2

【问题讨论】:

    标签: java ejb-3.0 weblogic weblogic-10.x java-ee-5


    【解决方案1】:

    所以我能够通过向 bean 添加 @RemoteHome(MyRemoteHome.class) 来“修复”这个问题

    public interface MyRemoteMethods {
        String myMethod() throws RemoteException; // this Ex is required
    }
    
    public interface MyRemote extends EJBObject, MyRemoteMethods { 
    }
    
    public interface MyRemoteHome extends EJBHome {
        public MyRemote create() throws CreateException, RemoteException;
    }
    

    那么我的豆子

    ...
    @RemoteHome(MyRemoteHome.class)
    public class MyBean implements MyRemoteMethods {
    ...
    

    以前,只有 bean 和 Remote 接口存在。 (没有本地使用)

    总体而言,此修复使我的 EJB 3 更像 EJB 2,而不是那么干净(涉及更多代码和类)。我也不清楚为什么我可以从我的本地 和远程服务器 对 RemoteHome 接口(和调用 create)进行 jndi 查找而没有得到 ClassCastException,但是当我为远程接口执行此操作时,我 得到一个 ClassCastException。这是 Weblogic 中的错误吗? (我也看过一些类似使用 JBoss 的帖子)

    【讨论】:

      猜你喜欢
      • 2016-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多