简单的RMI回调示例
问题描述:
有人可以给出一个简单的RMI回调Hello World例子吗?我一直在试图研究它,但我似乎找不到一个我明白的东西。我不明白回拨是什么。简单的RMI回调示例
这是我目前的Hello World RMI是否有帮助?
接口
package example.hello;
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface Hello extends Remote {
String sayHello() throws RemoteException;
}
客户
package example.hello;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
public class Client {
private Client(){}
public static void main(String[] args){
String host = (args.length < 1) ? null : args[0];
try{
Registry registry = LocateRegistry.getRegistry(host);
Hello stub = (Hello) registry.lookup("Hello");
String response = stub.sayHello();
System.out.println("response: " + response);
} catch (Exception e) {
System.err.println("Client exception: " + e.toString());
e.printStackTrace();
}
}
}
服务器
package example.hello;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.UnicastRemoteObject;
public class Server implements Hello {
public Server(){}
@Override
public String sayHello() {
System.out.println("responded!");
return "Hello, world!";
}
public static void main(String[] args) {
try{
Server obj = new Server();
Hello stub = (Hello) UnicastRemoteObject.exportObject(obj, 0);
// Bind the remote object's stub in the registry
Registry registry = LocateRegistry.getRegistry();
registry.bind("Hello", stub);
System.err.println("Server ready");
} catch (Exception e) {
System.err.println("Server exception: " + e.toString());
e.printStackTrace();
}
}
}
答
我不是专家在RMI,但我可以告诉您可以从“David和Michael Reilley”中搜索“Java网络编程和分布式计算”一书。您将能够找到一个从278页开始的RMI CALLBACK实现的好例子!
笔者定义了一个很好的方式去理解它,所以我因子评分会是更好的复制/粘贴不是试图使自己的,这里有云:理解回调
- ”最简单的方法是想要打一个电话,假设你想知道股票价格是否达到一定的水平,并且你要求你的经纪人在它回来时回电,当经纪人(事件的来源)注意到股票价格反映的时候你的参数,他或她给你回电,通知你新的价格,这是一个回调。“
在默认的实现,RMI只允许客户机之间的通信到服务器,请求在服务器主机远程服务(远程对象)的行动。您可以使用回调方法,而不是让您的服务器与您的客户端通话!
Thast很棒!想象一下,如果你有一台服务器,你想检查它是否在线(或者如果没有丢弃/关闭),客户端!你将不得不请求继续使用一个远程对象,该对象应该返回一些布尔值(例如),告诉它实际上是在线的。
那太可怕了!因为你会丢失一些网络带宽,再次请求服务器,再次,并再次...造成一些连接池!
这是WY应该是有用的,在这些情况下使用回拨;-)
我希望你能对我的回答有点明白了什么回调/做。
最好的问候,
或许本文的第4章:HTTP://www.scribd.com/doc/67084961/MasterArbeit会帮助你了解与RMI回调 –