dubbo learning day2
- for what purpose?
- how to achieve?
- simple implementation.
业务场景描述
假设我们需要构建一个sayHello的服务,这个服务只需要简单的输出“hello!”。
按照常规的设计思路,我们会为这个服务设计一个接口HelloService ,和一个实现类HelloServiceImpl。
eg.
interface HelloService : sayHello()
class HelloServiceImpl : sayHello(){ print “hello!”}
普通服务调用过程
HelloService helloService = new HelloServiceImpl();
helloService.sayHello();RMI方式服务调用过程
2.1 服务端实现
package example.hello;
import java.rmi.registry.Registry;
import java.rmi.registry.LocateRegistry;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
public class Server implements HelloService {
public Server() {}
public String sayHello() {
return "Hello!";
}
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();
}
}
}
2.2 客户端实现
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();
}
}
}
参考资料
1. RMI. http://docs.oracle.com/javase/6/docs/technotes/guides/rmi/hello/hello-world.html