ClassCastException使用JNLP从JBoss 7获取远程存根

时间:2014-04-21 14:20:54

标签: java rmi jnlp classcastexception

我已经编写了一个适配器来从JBoss 7获取我的bean的远程接口。

public DAdapter(Context context, boolean remote) throws DAdapterException {
    try {
        if (context==null){
            context = new InitialContext();
        }
        String res = "ear_name/jar_name/DAdapterBean!xxx.yyy.DAdapterRemote";
        dAdapter = (IDAdapter)context.lookup(res);
    } catch(Exception ex) {
        ex.printStackTrace();
        throw new DAdapterException("Could not create DmsAdapter service.", ex);
    }
}

DAdapterRemote是一个远程接口,它扩展了IDAdapter。它的EJB3。 如果我从沙箱(来自Eclipse)运行此方法,它就像一个魅力。但是当我在JNLP应用程序上下文中执行它时,我得到了ClassCastException。

context.lookup(res)

在两种情况下都返回sun.proxy。$ Proxy,并且它具有在IDAdapter中声明的方法。

我甚至尝试过反射,但似乎参数类版本与界面中使用的版本不同 - 至少它无法通过(methodName,args)方法找到合适的方法。我发誓他们是一样的。

我应该先检查一下?

1 个答案:

答案 0 :(得分:0)

好的,它已经解决了。我有两个不同的类加载器,它们都有类似的POJO类,因此它将我带到了X.class.equals(X.class) - > false并将我的演员阵容压缩到界面,因为方法有不同的签名。