我有一个程序通过似乎是命名服务执行查找。奇怪的是,有时查找会返回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中找到某个方法的调用?
答案 0 :(得分:1)
您可以将代理转换为它代理的类型,然后调用方法:
Foo foo = (Foo) obj;
foo.someMethod(...);
如果您没有该类型,那么您可以使用Java Reflection向代理询问其方法,就像使用任何普通实例一样:
obj.getClass().getMethods();