java rmi 使用方法
server
package Server; import java.rmi.Naming;
import java.rmi.RMISecurityManager;
import java.rmi.registry.LocateRegistry; import Service.Calc;
import ServiceImpl.CalcImpl; public class Server{
// 由于这里测试我们是最终用户,所以直接将异常抛给虚拟机
public static void main(String[] args) throws Exception
{
System.setSecurityManager(new RMISecurityManager()); //权限
System.setProperty("java.rmi.server.hostname","192.168.1.119"); //指定外网IP LocateRegistry.createRegistry(9000);
//System.setProperty("java.security.policy", "/home/ufo/workspace_java/RMIServer/Calc.policy");
Calc c = new CalcImpl(); Naming.rebind("rmi://192.168.1.119:9000/Calc", c); System.out.println("rmi server start ...");
}
}
service
package Service;
import java.rmi.*;
public interface Calc extends Remote {
public int add(int x,int y) throws RemoteException;
}
service impl
package ServiceImpl; import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject; import Service.Calc; public class CalcImpl extends UnicastRemoteObject implements Calc{ /**
*
*/
private static final long serialVersionUID = 6523564220840187253L; public CalcImpl() throws RemoteException {
super();
// TODO Auto-generated constructor stub
} @Override
public int add(int x, int y) {
// TODO Auto-generated method stub
System.out.println("add called!");
return x+y;
} }
client
package client; import java.rmi.*;
import java.net.MalformedURLException;
import Service.Calc; public class Client
{
// 同样为了方便,直接异常抛出
public static void main(String[] args) throws Exception
{
System.setSecurityManager(new RMISecurityManager());
try
{
// 这里因为是在本地所以省略了地址跟协议,若在网络中的远程方法调用,需要这样写
// Converter c = (Converter)Naming.lookup("rmi://192.168.0.13/convert");
Calc c = (Calc)Naming.lookup("rmi://192.168.1.119:9000/Calc");
int rmb = c.add(10,20);
System.out.println("add result : " + rmb);
}
catch (MalformedURLException e)
{
e.printStackTrace();
}
catch (RemoteException e)
{
e.printStackTrace();
}
catch (NotBoundException e)
{
e.printStackTrace();
}
}
}
客户端和服务器端都需要制定 类权限文件,即启动时命令 java -Djava.security.policy=./Calc.policy server.Server[client.Client]
Calc.policy
grant {
permission java.security.AllPermission;
};
客户端还需要有服务的接口声明
java rmi 使用方法的更多相关文章
- Java RMI 远程方法调用
Java RMI 指的是远程方法调用 (Remote Method Invocation).它是一种机制,能够让在某个 Java 虚拟机上的对象调用另一个 Java 虚拟机中的对象上的方法.可以用此方 ...
- Java RMI远程方法调用
RMI(远程接口调用) 1. RMI的原理: RMI系统结构,在客户端和服务器端都有几层结构. 方法调用从客户对象经占位程序(Stub).远程引用层(Remote Reference Layer)和传 ...
- Java APi 之 RMI远程方法调用
一.什么是RPC RPC全称是remote procedure call,即远程过程调用.它是一种协议,用于从远程计算机上请求服务. 例如有两台服务器A和B,A上的应用想要调用B上应用的方法,但是他们 ...
- 在Ubuntu中启动./jmeter-server报错Server failed to start: java.rmi.RemoteException: Cannot start. ranxf is a loopback address.解决方法
执行失败错误信息: root@ranxf:/home/ranxf/apache-jmeter-3.1/bin# ./jmeter-server Writing log file to: /home ...
- Java RMI之HelloWorld篇
Java RMI 指的是远程方法调用 (Remote Method Invocation).它是一种机制,能够让在某个 Java 虚拟机上的对象调用另一个 Java 虚拟机中的对象上的方法.可以用此方 ...
- JAVA RMI 实例
下面我将介绍一个完整的实例,让初学者能快速体验RMI的功用. 分为以下四个步骤 1. 创建远程接口及声明远程方法(HelloInterface.java)2. 实现远程接口及远程方法(继承Unicas ...
- Java RMI 介绍和例子以及Spring对RMI支持的实际应用实例
RMI 相关知识 RMI全称是Remote Method Invocation-远程方法调用,Java RMI在JDK1.1中实现的,其威力就体现在它强大的开发分布式网络应用的能力上,是纯Java的网 ...
- Java学习笔记(十六)——Java RMI
[前面的话] 最近过的好舒服,每天过的感觉很充实,一些生活和工作的技巧注意了就会发现,其实生活也是可以过的如此的有滋有味,满足现在的状况,并且感觉很幸福. 学习java RMI的原因是最近在使用dub ...
- JAVA RMI helloworld入门
Java RMI 指的是远程方法调用 (Remote Method Invocation).它是一种机制,能够让在某个 Java 虚拟机上的对象调用另一个 Java 虚拟机中的对象上的方法.可以用此方 ...
随机推荐
- OSPF+LVS ,qugga,vconfig,...感觉这些很有想法啊
将以前铁板一块的硬件拿来无限细分,路由器,交换机可灵活实现,SDN,NVF.硬盘可以分区,分区可以分布式块存储,操作系统可虚拟化,KVM OR LXC,网络可自由随时按需求定制更改配置. 操作系统支持 ...
- Windows 7 mklink命令详解
mklink是Windows 7下的一个类似于linux下In的命令,其作用是在NTFS文件系统中创建文件或目录的链接(类似于桌面快捷方式).如果加以利用其发挥的作用是非常的大的,不仅可以帮助我们节省 ...
- BZOJ 1023 [SCOI2009]生日快乐
1024: [SCOI2009]生日快乐 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 1729 Solved: 1219[Submit][Statu ...
- Spark RDD Union
示例 Spark多个RDD(数据格式相同)“组合”为一个RDD 代码 from pyspark import SparkConf, SparkContext conf = SparkCon ...
- Delphi7 THTTPRIO 控件设置超时
HTTPRIOLeExp.HTTPWebNode.SendTimeout := 100000; //发射 HTTPRIOLeExp.HTTPWebNode.ConnectTimeout := 10 ...
- 查看当前windows字符集
查看当前windows字符集 命令行输入:chcp
- web前端面试试题总结---css篇
CSS 介绍一下标准的CSS的盒子模型?低版本IE的盒子模型有什么不同的? (1)有两种, IE 盒子模型.W3C 盒子模型: (2)盒模型: 内容(content).填充(padding).边界(m ...
- 4 Java学习之 反射Reflection
1. 反射概念 反射机制就是:动态地获取类的一切信息,并利用这些信息做一些你想做的事情. java反射机制能够知道类名而不实例化对象的状态下,获得对象的属性或调用方法. JAVA反射机制是在运行状态 ...
- 推荐一款不错的dialog小工具:artDialog
推荐一款不错的dialog小工具, 地址:http://www.planeart.cn/demo/artDialog/_doc/labs.html 相关介绍例如以下: artDialog是一个基于ja ...
- paip.gch预编译头不生效的原因以及解决:
paip.gch预编译头不生效的原因以及解决: 作者Attilax , EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.net/a ...