通过com.sun.proxy实例进行调用

时间:2013-10-29 14:08:10

标签: java proxy ejb corba

我有一个程序通过似乎是命名服务执行查找。奇怪的是,有时查找会返回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中找到某个方法的调用?

1 个答案:

答案 0 :(得分:1)

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

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

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

obj.getClass().getMethods();

请参阅the Proxy documentation