Java 简单RMI回调示例
有人能给出一个简单的RMI回调Hello World的例子吗?我一直在研究它,但我似乎找不到一个我理解的。我不明白回调是什么 这是我目前的Hello World RMI,如果有帮助的话 接口Java 简单RMI回调示例,java,callback,rmi,Java,Callback,Rmi,有人能给出一个简单的RMI回调Hello World的例子吗?我一直在研究它,但我似乎找不到一个我理解的。我不明白回调是什么 这是我目前的Hello World RMI,如果有帮助的话 接口 package example.hello; import java.rmi.Remote; import java.rmi.RemoteException; public interface Hello extends Remote { String sayHello() throws Rem
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();
}
}
}
我不是RMI方面的专家,但我可以告诉你,你可以从“David和Michael Reilley”中搜索“Java网络编程和分布式计算”一书。您将能够找到从第278页开始的RMI回调实现的一个很好的示例 作者定义了一种理解它的好方法,因此我认为复制/粘贴比尝试制作自己的更好,如下所示:
- 理解回调的最简单方法是想象一个电话。假设你想知道某个股票价格是否达到某个水平,当它达到某个水平时,你让你的经纪人回电话。当经纪人(事件的来源)回电话时注意到股票价格反映了您的参数,他或她会给您回电话,通知您新的价格。这是回拨。“
最好的祝愿,也许本文的第4章:将帮助您理解RMI的回调
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();
}
}
}