通过一个小例子了解RPC
2015-02-17 21:33
681 查看
通过一个小例子了解RPC
1、eclipse目录:
MyServer.java 类:
MyClient.java类:
MyBizable.java类:
MyBizjava类:
2、启动MyServer类:
3、启动MyClient类:
4、cmd 里jps查看:
1.RPC
1.1RPC (remote procedure call)远程过程调用.
远程过程指的是不是同一个进程。
1.2RPC至少有两个过程。调用方(client),被调用方(server)。
1.3client主动发起请求,调用指定ip和port的server中的方法,把调用结果返回给client。
1.4RPC是hadoop构建的基础。
2. 通过例子获得的认识?
2.1RPC是一个远程过程调用。
2.2客户端调用服务端的方法,意味着调用服务端的对象中的方法。
2.3如果服务端的对象允许客户端调用,那么这个对象必须实现接口。
2.4如果客户端能够调用到服务端对象的方法,那么这些方法一定位于对象的接口中。
MyServer.java:
MyClient.java:
MyBizable.java:
MyBiz:
1、eclipse目录:
MyServer.java 类:
MyClient.java类:
MyBizable.java类:
MyBizjava类:
2、启动MyServer类:
3、启动MyClient类:
4、cmd 里jps查看:
1.RPC
1.1RPC (remote procedure call)远程过程调用.
远程过程指的是不是同一个进程。
1.2RPC至少有两个过程。调用方(client),被调用方(server)。
1.3client主动发起请求,调用指定ip和port的server中的方法,把调用结果返回给client。
1.4RPC是hadoop构建的基础。
2. 通过例子获得的认识?
2.1RPC是一个远程过程调用。
2.2客户端调用服务端的方法,意味着调用服务端的对象中的方法。
2.3如果服务端的对象允许客户端调用,那么这个对象必须实现接口。
2.4如果客户端能够调用到服务端对象的方法,那么这些方法一定位于对象的接口中。
MyServer.java:
package rpc; importorg.apache.hadoop.conf.Configuration; importorg.apache.hadoop.ipc.RPC; importorg.apache.hadoop.ipc.RPC.Server; public class MyServer { static final String ADDRESS="localhost"; static final int PORT=12345; public static void main(String agrs[]) throws Exception{ /** * 构造一个RPC的服务端. * @param instance 这个实例中的方法会被调用 * @param bindAddress 绑定的地址是用于监听连接的 * @param port 绑定的端口是用于监听连接的 * @param conf the configuration to use */ final Server server=RPC.getServer(new MyBiz(), ADDRESS, PORT, new Configuration()); server.start(); } }
MyClient.java:
package rpc; importjava.net.InetSocketAddress; importorg.apache.hadoop.conf.Configuration; importorg.apache.hadoop.ipc.RPC; public class MyClient { public static void main(String args[]) throws Exception{ /** * 构造一个客户端代理对象,该代理对象实现了命名的协议。代理对象会与指定地址的服务端通话 */ MyBizable proxy=(MyBizable)RPC.waitForProxy( MyBizable.class, MyBizable.VERSION, new InetSocketAddress(MyServer.ADDRESS,MyServer.PORT), new Configuration()); final String result=proxy.hello("world"); System.out.println("客户端结果:"+result); //关闭网络连接 RPC.stopProxy(proxy); } }
MyBizable.java:
package rpc; importorg.apache.hadoop.ipc.VersionedProtocol; public interface MyBizable extends VersionedProtocol{ long VERSION=567890L; public abstract String hello(String name); }
MyBiz:
package rpc; importjava.io.IOException; public class MyBiz implements MyBizable{ @Override public long getProtocolVersion(String arg0, long arg1) throws IOException { // TODOAuto-generated method stub returnVERSION; } @Override public String hello(String name) { // TODOAuto-generated method stub return "hello"+name; } }
相关文章推荐
- 通过一个例子了解MapReduce
- 通过一个小例子了解Java RMI
- 通过一个例子了解filter()和find()的用法/children()与find()区别
- [UNet]通过一个小测试了解Command和ClientRpc的功能
- 通过一个例子了解MapReduce
- 【自】JavaScript面向对象初探二:通过编写一个拖拽例子,让我们了解对象的继承
- 通过一个文件拷贝的例子了解二进制文件的读写
- 黑马程序员:通过一个小例子了解java内部类和外部类的基础知识
- 通过一个例子了解Ajax
- 通过一个例子了解MapReduce
- 通过一个简单的ListView例子看桌面开发和移动开发
- [导入][原创]一个通过BackgroundWorker实现WinForm异步操作的例子
- 通过一个实际的例子学习Oracle存储过程
- 通过一个Socket例子理解Http协议
- js通过xmldom调用xslt对xml排序输出的一个简单例子.
- 通过程序自定义按钮皮肤:一个简单的例子。
- 通过反射调用COM组件的一个例子
- 一个文字淡入淡出的例子(Delphi7测试通过)
- 一个从右到左,文字循环平滑滚动的例子(Delphi7测试通过)
- 通过一个简单的AJAX实例,了解其大致步骤