Java 通过com.sun.proxy实例进行调用
我有一个程序,它通过一个命名服务执行查找。奇怪的是,有时查找返回IOR,但有时返回com.sun.proxy实例(com.sun.proxy)$Proxy0@573745ec例如,这似乎是一个例子) 确切地说,代码如下所示:Java 通过com.sun.proxy实例进行调用,java,proxy,ejb,corba,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.PRO
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中某个方法的调用?您可以将代理强制转换为其代理的类型,然后调用方法:
Foo foo = (Foo) obj;
foo.someMethod(...);
如果没有该类型,则可以使用Java反射向代理请求其方法,就像处理任何普通实例一样:
obj.getClass().getMethods();
请参阅。您可以将代理强制转换为其代理的类型,然后调用方法:
Foo foo = (Foo) obj;
foo.someMethod(...);
如果没有该类型,则可以使用Java反射向代理请求其方法,就像处理任何普通实例一样:
obj.getClass().getMethods();
请参阅。什么是IOR?您是否检查过类的类型
Proxy0
,看它是否扩展了您想要的类?您没有发布足够的信息来给您一个明确的答案,但听起来您只是得到了一个自动生成的代理,您可以使用它,就像原始class.IOR代表可互操作的对象引用()。它是远程对象的CORBA/RMI-IIOP标识符。什么是IOR?您是否检查过类的类型Proxy0
,看它是否扩展了您想要的类?您没有发布足够的信息来给您一个明确的答案,但听起来您只是得到了一个自动生成的代理,您可以使用它,就像原始class.IOR代表可互操作的对象引用()。它是远程对象的CORBA/RMI-IIOP标识符。