1

我有一个程序通过似乎是命名服务执行查找。奇怪的是,有时查找返回一个 IOR,但有时它返回一个 com.sun.proxy 实例(例如,com.sun.proxy.$Proxy0@573745ec,它似乎是一个实例)。

确切地说,代码如下所示:

        Properties p = new Properties();
        p.put(Context.INITIAL_CONTEXT_FACTORY,"some.context.factory");
        p.put(Context.PROVIDER_URL, host+":"+port);
        p.put(Context.URL_PKG_PREFIXES, "some.package.prefixes"); 
        InitialContext ctx = new InitialContext(p);
        String ejbName = "some/lookup/string";

        Object obj = ctx.lookup(ejbName);

然后obj是 com.sun.proxy 实例。如何调用找到的 EJB 中的某些方法?

4

1 回答 1

1

您可以将代理转换为它代理的类型,然后调用方法:

Foo foo = (Foo) obj;
foo.someMethod(...);

如果您没有该类型,则可以使用 Java 反射向代理询问其方法,就像使用任何普通实例一样:

obj.getClass().getMethods();

请参阅代理文档

于 2013-10-29T15:11:26.287 回答