通过 com.sun.proxy 实例拨打电话

Posted

技术标签:

【中文标题】通过 com.sun.proxy 实例拨打电话【英文标题】:Make a call through com.sun.proxy instance 【发布时间】:2013-10-29 14:08:09 【问题描述】:

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

【问题讨论】:

什么是 IOR?你有没有检查过Proxy0 的类的类型,看看它是否扩展了你想要的类?你没有发布足够的信息来给你一个明确的答案,但听起来你只是得到一个自动生成的代理,你可以像原来的类一样使用它。 IOR 代表可互操作对象参考 (en.wikipedia.org/wiki/Interoperable_Object_Reference)。它是远程对象的 CORBA/RMI-IIOP 标识符。 【参考方案1】:

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

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

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

obj.getClass().getMethods();

见the Proxy documentation。

【讨论】:

以上是关于通过 com.sun.proxy 实例拨打电话的主要内容,如果未能解决你的问题,请参考以下文章

通过 iPhone App 拨打电话号码

如何通过android上的ADB命令通过pc拨打电话?

使用 UCWA 拨打电话

在拨打电话时获取用户的位置

微信开发:如何一键拨打电话

我可以在 Android 上通过 HTML 拨打电话吗?