该系统主要依赖的RPC(Remote Procedure Call):远程过程调用。 **分布式系统概述,分布式系统是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。分布式系统的出现是为了用廉价的、普通的机器完成单个计算机无法完成的计算、存储任务。其目的是利用更多的机器,处理更多的数据 ** 解析:通过原始的socket通信原理,完成计算机之间的交互。 下面实例解析:
1. 发布端 1.1过程概述 任务一:创建接口类 任务二:实现接口类,并实现接口的所有方法 任务三:将服务的对象发布出去 1.2代码解析 任务一:
public interface IService { public void ser1(); public void ser2(); public String ser3(String str); }任务二:
@WebService public class service implements IService{ @WebMethod public void ser1() { System.out.println("服务器成立啦"); } @WebMethod public void ser2() { System.out.println("经过工作人员不懈努力,服务器版本升级1.1了"); } public String ser3(String str) { System.out.println("来自客户端的访问"+str); String str2="你好,"+str; return str2; } }任务三:发布任务 核心代码:ENDPOINT.publish(8080/projectName,实例对象)(终端)
public class publish { public static void main(String[] args) { IService isis=new service(); System.out.println("开始发布"); Endpoint.publish("http://localhost:8080/myService1", isis); System.out.println("发布成功"); } }2. jkd编译 (生成客户端调用) 第一步:访问publish()的网址http://localhost:8080/myService1,得到wsdl文件信息
第二步: 使用cmd编译jdk自带的wsimport(jkd/bin目录下)生成客户端程序
wsimport -keep -p com.bwf http://localhost:8090/myService1?wsdl
C:\Users\Administrator\Desktop>wsimport -keep -p com.bwf2.service http://localhost:8080/myService1?wsdl parsing WSDL... Generating code... Compiling code... C:\Users\Administrator\Desktop>得到java和class文件
第三步:将.java文件copy到客户端目录文件下 第四步: 客户端下运行copy到的.java文件即可
public class Test2 { public static void main(String[] args) { //查看java文件,找到原始的interface接口类(Service)和实现类(ServiceService )名称 //创建接口类和实现类对象,并调用实现的getServicePort方法,拿到接口类 Service service=null; ServiceService ss=new ServiceService(); service=ss.getServicePort(); service.ser1(); service.ser2(); String info=service.ser3("张三"); System.out.println(info); System.out.println("调用结束"); } }3. 完成服务端方法,在客户端调用,如服务端更新方法内容,只需要重启服务即可,如需要产生新的方法,则需要重新完成上述步骤 结果: 服务器启动: 客户端调用服务器端的方法:
客户端执行方法后,返回信息:
总结:至此,简单的分布式模块化功能已基本实现,但这里采用的是TCP协议,而在springboot中的分布式采用的HTTP协议。