Java中RMI远程调用demo

Java远程方法调用,即Java RMI(Java Remote Method Invocation),一种用于实现远程过程调用的应用程序编程接口。它使客户机上运行的程序可以调用远程服务器上的对象。远程方法调用特性使Java编程人员能够在网络环境中分布操作。RMI全部的宗旨就是尽可能简化远程接口对象的使用。  Java RMI极大地依赖于接口。在需要创建一个远程对象的时候,程序员通过传递一个接口来隐藏底层的实现细节。客户端得到的远程对象句柄正好与本地的根代码连接,由后者负责透过网络通信。这样一来,程序员只需关心如何通过自己的接口句柄发送消息。

/*服务端新建接口:*/
public interface RmiTestInterface extends Remote{
public String getTest() throws RemoteException;
}

  

/*接口的实现:*/
public class RmiTestImpl implements RmiTestInterface{
	public RmiTestImpl() throws RemoteException{

	}
	@Override
	public String getTest() throws RemoteException{

		return "Hello MM";
	}
	public static void main(String[] args) throws RemoteException {
		RmiTestImpl t=new RmiTestImpl();
		RmiTestInterface tt=(RmiTestInterface) UnicastRemoteObject.exportObject(t, 0);
		Registry registry=LocateRegistry.createRegistry(2001);
		registry.rebind("test", tt);
		System.out.println("server is start");
	}

}

  

/*client端的主程序*/
public class Client {
public static void main(String[] args){
	try {
		Registry registry=LocateRegistry.getRegistry("localhost", 2001);
		RmiTestInterface t=(RmiTestInterface) registry.lookup("test");
		System.out.println("Client:"+t.getTest());
	} catch (RemoteException e) {
		e.printStackTrace();
	}catch (NotBoundException e) {
		e.printStackTrace();
	}
}
}

  

时间: 2024-12-15 14:28:53

Java中RMI远程调用demo的相关文章

Java中使用HttpRequest调用RESTfull的DELETE方法接口提示:How to fix HTTP method DELETE doesn't support output

说明:无论是Spring框架还是Spring Boot的Feign形式的客户端,以下的解决方法都适用. 解决方法:直接升级JDK 1.8,这个问题是1.7的BUG. 参考: https://salesforce.stackexchange.com/questions/34624/http-method-delete-doesnt-support-output https://salesforce.stackexchange.com/questions/66097/how-to-fix-http-

Python中实现远程调用(RPC、RMI)简单例子

说白了,远程调用就是将对象名.函数名.参数等传递给远程服务器,服务器将处理结果返回给客户端 远程调用使得调用远程服务器的对象.方法的方式就和调用本地对象.方法的方式差不多,因为我们通过网络编程把这些都隐藏起来了.远程调用是分布式系统的基础. 远程调用一般分为两种,远程过程调用(RPC)和远程方法调用(RMI). RPC RPC属于函数级别的远程调用,其多是通过HTTP传输数据,数据形式有XML.JSON.序列化数据等.在此,用python做一个xml-rpc的示例. 先给服务器端server.p

WebService与RMI(远程调用方式实现系统间通信)

前言 本文是<分布式java应用基础与实践>读书笔记:另外参考了此博客,感觉讲的挺好的,尤其是其中如下内容: 另外,消息方式实现系统间通信本文不涉及.RMI则只采用spring RMI框架来实现效果,更多的则是来讲讲webService及效果. RMI(Remote Method Invocation) ----> spring RMI(配置及实现直接参考spring文档,已经很详细了) spring RMI工作原理图如下: RMI代码结构图: 服务端代码 接口Business.java

关于&lt;Java 中 RMI、JNDI、LDAP、JRMP、JMX、JMS那些事儿(上)&gt;看后的一些总结-1

原文地址:https://www.anquanke.com/post/id/194384#h3-3 1.java rmi 关于rmi客户端和服务端通信的过程,java的方法都实现在rmi服务端,客户端实际上是通过访问rmi注册表拿到stub,然后再通过它调用服务端方法,那么调用方法时要传递参数,参数可以为一般类型,也可以为引用类型,那么如果为引用类型,就能够利用服务端已经有的gaget chain来打server,因为参数实际上是序列化传输的,那么数据到达服务端后必定会经过反序列化. 客户端:

hession RMI 远程调用

/** * * @author administror * 在java中,需要去extends 继承java.rmi.Remote 接口,才能称为在于服务器流的远程对象. * 各客服端调用 * */public interface Hello extends Remote { //实现了Remote接口,该接口的方法可以被客服端远程调用 public String helloWord() throws java.rmi.RemoteException; public String sayGood

Java中的递归调用

Java中不合理的使用递归调用,可能会导致栈内存溢出,这点是需要注意的. java将为每个线程维护一个栈,栈里将为每个方法保存一个栈帧,栈帧代表了一个方法的运行状态. 也就是我们常说的方法栈.最后一个为当前运行的栈帧. 那么每一次方法调用会为新调用方法的生成一个栈帧,保存当前方法的栈帧状态,栈帧上下文切换,切换到最新的方法栈帧. 在递归和循环之间选择时,应该优先选择的是循环而非递归,特别是要避免深度的递归. 关于递归还需要了解的是尾递归调用,尾递归调用是可以被进行优化的. 尾调用指的是一个方法或

Java中socket接口调用

最近一个项目中接口通讯这一块主要是调用银联系统的socket接口,我方是客户端,即发送请求接收返回报文的一方.在贴代码之前,还是要了解一下关于socket的基础知识. Socket的基本概念 1.建立连接 当需要建立网络连接时,必须有一台机器运行一个程序,随时等候连接,而另一端的程序这对其发出连接请求.这一点同电话系统类似--必须有一方拨打电话,而另一方必须等候电话连通. 建立连接的过程为: (1)先在服务器端生成一个ServerSocket实例对象,随时监听客户端的连接请求. (2)当客户端需

rmi远程调用

1.在服务器端程序中的spring-servlet.xml中添加 <bean id="userService" class="org.springframework.remoting.rmi.RmiServiceExporter"> <property name="serviceName"> <value>UserService</value> </property> <prope

1.JAVA中使用JNI调用C++代码学习笔记

Java 之JNI编程1.什么是JNI? JNI:(Java Natibe Inetrface)缩写. 2.为什么要学习JNI?  Java 是跨平台的语言,但是在有些时候仍然是有需要调用本地代码 (这些代码通常是由C/C++编写的). Sun公司提供的JNI是Java平台的一个功能强大的接口.这个JNI接口提供了Java与操作系统本地代码互相调用的功能.(即java调用C++代码) 最简单的Java调用C/C++代码步骤 1.创建TestNativeCode工程,新建cn.itcast包,新建