RMI 实现的rpc 远程过程调用 Java
来源:互联网 发布:淘宝客服怎么做兼职 编辑:程序博客网 时间:2024/05/22 08:01
在前面一片文章里面 ,简单的实现了keras 深度学习的数字识别程序代码 后 ,一直就在想 训练出来的模型怎么包装成SOA 服务使用,咨询了下京东 金融的同事 ,他们使用的是京东自己的soa 框架 jsf ,还有就是当当网的dubbox ,这个是源于阿里的dubbo。最近也看到一个朋友的简历上有很多关于dubbo 的描述 ,看来业界对这个还是情有独钟的 。
搭建前面的jsf 和 dubbox 看起来不容易实现,所以想尝试 使用最简单的rpc 实现 ,因此才有了今天的rmi 的 codes 。这个code 还没有实现读取模型的操作 。是一个建议版本
。未来是想实现server 端读取model ,client 读取一个28*28 的数字 ,调用server端的模型,计算数字本身的真实值 。
定义一个借口 ,未来是要读取model的
package com.jd.rmi.interfaces;import java.rmi.Remote;import java.rmi.RemoteException;public interface IService extends Remote{ public String queryName(String no) throws RemoteException;}
借口的实现codes
package com.jd.rmi.Impl;import com.jd.rmi.interfaces.IService;import java.rmi.RemoteException;import java.rmi.server.UnicastRemoteObject;public class ServiceImpl extends UnicastRemoteObject implements IService{ /** * @throws RemoteException */ public ServiceImpl() throws RemoteException { super(); } public String queryName(String no) throws RemoteException{ // 方法的具体实现 System.out.println("hello " + no); return String.valueOf("current timestamp is :"+ System.currentTimeMillis()); }}
上面的操作都是针对业务处理的逻辑
下面是实现一个服务器端的server服务
package com.jd.rmi.server;import com.jd.rmi.Impl.ServiceImpl;import java.rmi.AlreadyBoundException;import java.rmi.RemoteException;import java.rmi.registry.LocateRegistry;import java.rmi.registry.Registry;public class Server { /** * RMI (Remote Method Invocation) RMI 采用stubs 和 skeletons 来进行远程对象(remote object)的通讯。 stub 充当远程对象的客户端代理,有着和远程对象相同的远程接口, 远程对象的调用实际是通过调用该对象的客户端代理对象stub来完成的, 通过该机制RMI就好比它是本地工作,采用tcp/ip协议, 客户端直接调用服务端上的一些方法。 优点是强类型,编译期可检查错误,缺点是只能基于JAVA语言,客户机与服务器紧耦合 * @param args */ public static void main(String[] args){ //Registration manager Registry registry = null; try { // registry = LocateRegistry.getRegistry("127.0.0.1" ,8088); registry = LocateRegistry.createRegistry(8088); } catch (RemoteException e) { e.printStackTrace(); } try { //create a server ServiceImpl server = new ServiceImpl(); //server bind to registry registry.bind("Ethan",server); System.out.println("bind to server..."); } catch (RemoteException e) { e.printStackTrace(); } catch (AlreadyBoundException e) { e.printStackTrace(); } }}
有了服务器端,也就少不了client 端了
package com.jd.rmi.client;import com.jd.rmi.interfaces.IService;import java.rmi.NotBoundException;import java.rmi.RemoteException;import java.rmi.registry.LocateRegistry;import java.rmi.registry.Registry;public class client { public static void main(String[] args){ Registry registry = null; try { //get server manager from host server registry = LocateRegistry.getRegistry("127.0.0.1",8088); // try list all registry String[] list = registry.list(); for(String s : list){ System.out.println(s); } } catch (RemoteException e) { e.printStackTrace(); } try { IService server = (IService)registry.lookup("Ethan"); String resutl = server.queryName("beautiful moon 1"); System.out.println("result from remote - " + resutl); } catch (RemoteException e) { e.printStackTrace(); } catch (NotBoundException e) { e.printStackTrace(); } }}
阅读全文
0 0
- RMI 实现的rpc 远程过程调用 Java
- RPC(远程过程调用) JAVA简单实现
- RPC(远程过程调用)应用的java实现
- RMI——Java远程过程调用(RPC)及回调方法
- java rmi 远程调用实现
- Python中实现远程调用(RPC、RMI)简单例子
- RMI远程调用过程
- 用Java实现基于SOAP的XML文档网络传输及远程过程调用(RPC)
- 用Java实现基于SOAP的XML文档网络传输及远程过程调用(RPC).doc
- 用Java实现基于SOAP的XML文档网络传输及远程过程调用(RPC)
- 用Java实现基于SOAP的XML文档网络传输及远程过程调用(RPC)
- 用Java实现基于SOAP的XML文档网络传输及远程过程调用(RPC)
- 远程过程调用(RPC)实现原理
- Hprose轻松实现远程过程调用(RPC)
- Java的RMI(远程方法调用)的实现范例
- Java的RMI(远程方法调用)的实现范例
- Java的RMI远程方法调用实现和应用
- 远程过程调用(RPC)
- 从问题角度来思考设计模式(3)
- “Hello World”在Linux系统上的运行过程
- NKOJ 3805 距离(线性筛)
- [深度学习]卷积神经网络快速入门
- 每周LeetCode算法题(六): 617. Merge Two Binary Trees
- RMI 实现的rpc 远程过程调用 Java
- Coursera自然语言处理 Week2 笔记
- 4. Median of Two Sorted Arrays
- minikube 快速搭建k8s
- 2017/10计划
- IDEA的javaweb项目的 The origin server did not find a current representation for the target resource
- 正则表达式基础元字符
- constraintLayout
- 阿里云CentOS下Tomcat配置https