我一直在通过一个非常简单的示例来设置远程方法调用应用程序,并且在浏览客户端代码时,我无法理解一个代码,如下所示。当然,我的知识存在差距,因为我虽然界面不能有对象unless you use Anonymous Inner Class。所以在下面的代码中我们是如何创建远程接口的对象的。如果我不得不猜测,那对我来说似乎是某种类型的铸造。
import java.rmi.*;
public class HelloClient {
public static void main(String args[]) {
try {
if (args.length < 0) {
System.err.println("usage: java HelloClient string …\n");
System.exit(1);
}
HelloInterface hello = (HelloInterface)Naming.lookup("//localhost/Hello");
最后一行是我无法理解(HelloInterface)部分究竟发生了什么?
答案 0 :(得分:5)
HelloInterface hello = (HelloInterface)Naming.lookup("//localhost/Hello");
Naming.lookup()
调用检查在localhost中运行的RMI注册表,以获取名称为&#34; Hello&#34;的绑定。我认为除非你使用匿名内部类,否则接口不能有对象。
我不知道你在这里谈论什么。任何类都可以实现接口。这是相当基本的。
所以在下面的代码中我们如何创建远程接口的对象
我们没有。我们将它作为注册表的返回值,由服务器放置。
如果我不得不猜测,对我来说似乎是某种类型的投射。
无需猜测。这就是它的确切含义。只有一种&#39;排序&#39;类型转换,这就是你写它的方式。这也很基本。
答案 1 :(得分:-1)
HelloInterface hello =(HelloInterface)Naming.lookup(&#34; // localhost / Hello&#34;);
这是什么意思?
它基本上是在服务器对象池中查找名为// localhost / Hello的对象。这称为JNDI名称
根据服务器的类型,可以在服务器配置文件中对其进行配置。