有人可以给出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;
}
Run Code Online (Sandbox Code Playgroud)
客户
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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
服务器
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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
Fil*_*lve 15
我不是RMI的专家,但我可以告诉你,你可以从"David and Michael Reilley"中搜索"Java网络编程和分布式计算"这本书.您将能够找到从第278页开始的RMI CALLBACK实现的一个很好的示例!
作者定义了一种理解它的好方法,所以我觉得复制/粘贴比尝试制作自己更好,这里有:
在默认实现中,RMI只允许CLIENT与SERVER之间的通信,请求服务器主机中的远程服务(远程对象)的操作.您可以使用回调方法,而不是让您的服务器与您的客户端通话!
Thast很棒!想象一下,如果你有一台服务器,你想要检查它是否在线(或者如果没有掉线/关机)给客户带来了!你必须要求连续使用一个远程对象,它应该返回一些布尔值(例如)告诉你实际上是在线的.
那太可怕了!因为你会丢失一些网络带宽,再次在服务器上再次请求,并再次......在它上面引起一些连接池!
那些应该是有用的,在这些情况下使用CALLBACK ;-)
我希望你能够理解我的答案,了解回调是什么/做了什么.
最好的祝福,
| 归档时间: |
|
| 查看次数: |
14020 次 |
| 最近记录: |