RMI学习过程

所谓分布式,就是一个系统的多个服务在不同的域上。
我们都知道实现分布式系统之间的通信包括基于消息的系统间通信,即tcp/ip,udp/ip的socket通信,还有rmi和websercie的方式。
今天学习了一下rmi,并做了一个小例子
过程如下:

1.首先创建远程服务器端的接口以及实现类。
package jdevelloper.rmi;

import java.rmi.Remote;
import java.rmi.RemoteException;
//接口要实现Remote接口,并且接口中的方法也要抛出RemoteException
public interface Hello extends Remote {

String sayHello() throws RemoteException;

}
2.编写接口对应的实现类
package jdevelloper.rmi;

import java.rmi.Naming;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;

public class HelloImp extends UnicastRemoteObject implements Hello {

private static final long serialVersionUID = 1L;

protected HelloImp() throws RemoteException {
super();
}

public String sayHello() throws RemoteException {
return "Hello word";
}

public static void main(String[] args) {
if(System.getSecurityManager()==null){
System.setSecurityManager(new SecurityManager());
}
try{
Hello obj = new HelloImp();
//使用RMI注册机注册对象
Naming.bind("HelloServer",obj);
System.out.println("HelloServer bound in registry");
}catch(Exception e){
e.printStackTrace();
}


}
}
//注:main方法中主要就是完成将服务器对象注册的RMI注册机中,可以提出来方法其他的类中
3.进入DOS编译以上两个文件
当我在dos中敲java的时候发现不识别该命令,这个原因是由于没有在高级环境变量中配置java bin的根目录导致的。
配置后重新启动机器,可以识别java命令
首先进入文件所在目录
f:
cd F:\worklearning\RMI\src\jdevelloper\rmi
javac -d . *.java
//javac -d表示把编译后的java文件按照包接口放到指定的目录下,这里使用.表示的是当前的目录.
进行rmi反编译以生产stub文件
rmic jdevelloper.rmi.HelloImp
//rmic是java中用于让远程对象生成stub和skeleton,所谓远程对象就是指实现remote接口的类
成功生成HelloImp_Stub.class文件后创建安全策略
在命令窗口中输入policytool
再弹出的窗口中选择添加规则项目-添加权限-选择全部权限,然后将文件保存到C:\Documents and Settings\Administrator路径下,保存名称为.java.policy。
启动rmi注册机
start rmiregistry
运行服务器端
java jdevelloper.rmi.HelloImp
抛出拒绝soctet访问的异常,于是我进入
C:\java1.6\jre\lib\security目录下,修改java.policy文件,在grant里添加
permission java.security.AllPermission;
permission java.util.PropertyPermission "file.encoding", "read";
命令
第二句的意思是让程序能读取二进制文件,否则会抛出拒绝读取二进制文件的异常
再次运行服务器脚本成功
然后创建客户端
package jdevelloper.rmi;

import java.rmi.Naming;

public class HelloClient {

public static void main(String[] args) throws Exception {
System.setSecurityManager(new SecurityManager());

Hello RemoteObj = (Hello)Naming.lookup("//localhost/HelloServer");
String message = RemoteObj.sayHello();
System.out.println(message);
}
}
重新打开一个DOS窗口,编译并运行
服务器端返回hello word
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我! 基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip基于Django+python编写开发的毕业生就业管理系统支持学生教师角色+db数据库(毕业设计新项目).zip
毕设新项目基于python3.7+django+sqlite开发的学生就业管理系统源码+使用说明(含vue前端源码).zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我! 学生就业管理系统(前端) ## 项目开发环境 - IDE: vscode - node版本: v12.14.1 - npm版本: 6.13.4 - vue版本: @vue/cli 4.1.2 - 操作系统: UOS 20 ## 1.进入项目目录安装依赖 ``` npm install ``` ## 2.命令行执行进入UI界面进行项目管理 ``` vue ui ``` ## 3.编译发布包(请注意编译后存储路径) #### PS:需要将编译后的包复制到后端项目的根目录下并命名为'static' 学生就业管理系统(后端) ## 1.项目开发环境 - IDE: vscode - Django版本: 3.0.3 - Python版本: python3.7.3 - 数据库 : sqlite3(测试专用) - 操作系统 : UOS 20 ## 2.csdn下载本项目并生成/安装依赖 ``` pip freeze > requirements.txt pip install -r requirements.txt ``` ## 3.项目MySQL数据库链接错误 [点击查看解决方法](https://www.cnblogs.com/izbw/p/11279237.html)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值