RMI简单应用:
我决定秉承一贯直接、爽快作风,直接代码分析:
服务器端代码:
package rmi.server.i;
import java.rmi.Remote;
import java.rmi.RemoteException;
/**
* @ version 创建时间:2014-3-24 上午11:25:58
*
* @ author leicl
*
* 类说明:
* 服务器端方法,供客户端访问,需要注册
*
*/
public interface ServerFunctionI extends Remote{
public int add(int i, int j) throws RemoteException;
public int div(int i, int j) throws RemoteException;
}
package rmi.server.imp;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import rmi.server.i.ServerFunctionI;
/**
* @ version 创建时间:2014-3-24 上午11:28:16
*
* @ author leicl
*
* 类说明:
*
*/
public class ServerFunctionImp extends UnicastRemoteObject implements ServerFunctionI{
public ServerFunctionImp() throws RemoteException {
super();
}
private static final long serialVersionUID = -6669980253701448838L;
public int add(int i, int j) throws RemoteException {
// TODO Auto-generated method stub
return i+j;
}
public int div(int i, int j) throws RemoteException {
// TODO Auto-generated method stub
return i-j;
}
}
客户端调用:
package rmi.client;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.ServerSocket;
import java.net.Socket;
import java.rmi.AlreadyBoundException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.RMIClientSocketFactory;
import java.rmi.server.RMIServerSocketFactory;
import rmi.server.i.ServerFunctionI;
import rmi.server.imp.ServerFunctionImp;
/**
* @ version 创建时间:2014-3-24 上午11:33:04
*
* @ author leicl
*
* 类说明:
*
*/
public class Client1 {
public static void main(String[] args) throws MalformedURLException,
RemoteException, AlreadyBoundException, NotBoundException {
ServerFunctionI s = new ServerFunctionImp();
Registry regist = LocateRegistry.createRegistry(2323,
new RMIClientSocketFactory() {
public Socket createSocket(String host, int port)
throws IOException {
Socket s = new Socket(host, port);
return s;
}
}, new RMIServerSocketFactory() {
public ServerSocket createServerSocket(int port)
throws IOException {
ServerSocket s = new ServerSocket(port);
return s;
}
});
regist.bind("server", s);
String[] list = Naming.list("rmi://127.0.0.1:2323");
for (int i = 0; i < list.length; i++) {
System.out.println(list[i]);
}
ServerFunctionI ser = (ServerFunctionI) Naming
.lookup("rmi://127.0.0.1:2323/server");
int add = ser.add(1, 1);
System.out.println(add);
}
}
相关推荐
总结来说,Spring RMI简单应用主要是利用Spring框架简化了RMI的配置和调用,使得在分布式环境中实现远程方法调用更加方便。通过定义远程接口、实现远程接口并在服务器端注册,以及在客户端创建代理类来调用远程方法...
创建客户端RMI调用服务端的应用程序。 启动服务端,再启动客户端,测试是否调用成功。 如果客户端和服务端不在同一台电脑上,则需要对刚才定义的服务类采用rmic 编译一个客户端的框架类_stub并拷贝到客户端的类...
这个给定的压缩包文件包含了一个简单的RMI聊天应用的源码,我们可以从中学到RMI的基础应用和相关概念。 首先,让我们来看看主要的源代码文件: 1. **RMIChatServerImpl.java**:这是服务器端的核心实现类,它实现...
- **简单易用**: RMI提供了简洁的API,使得分布式编程变得直观。 - **高性能**: 直接基于Java字节码的通信,减少了数据序列化和反序列化的开销。 - **跨平台性**: 由于Java的“一次编写,到处运行”特性,RMI同样...
这个"JAVA RMI简单例子"旨在帮助我们深入理解RMI的基本原理和实现步骤。 RMI的核心概念包括远程接口、远程对象和RMIC编译器。首先,我们需要定义一个远程接口,该接口声明了可以在远程服务器上执行的方法。这些方法...
在这个简单的例子中,我们将深入理解Spring RMI的工作原理以及如何实现一个基本的Spring RMI应用。 首先,让我们了解RMI的基本概念。RMI允许Java对象在不同的JVM之间进行通信,仿佛它们都在同一台机器上。它通过...
RMI在Java中提供了一种强大的分布式计算模型,使得对象之间的远程通信变得简单且高效。通过定义远程接口、实现远程对象、在服务器端注册以及在客户端调用这些步骤,可以构建起一个完整的RMI系统。在实际应用中,RMI...
总结来说,Java RMI简单示例主要展示了以下知识点: 1. **远程接口**:定义了远程方法的签名,需要继承`Remote`接口。 2. **远程对象**:服务器端的类实现远程接口,并继承`UnicastRemoteObject`,以支持远程调用。 ...
根据提供的文件信息,本文将详细解释RMI(远程方法调用)的概念、工作原理以及一个...上述示例展示了如何创建一个简单的RMI应用,包括服务端的实现和客户端的调用流程。这对于理解和实践RMI技术具有重要的指导意义。
RMI机制使得开发者能够像调用本地方法一样调用远端服务器上的对象方法,极大地简化了分布式应用的开发。下面将详细介绍RMI的基本概念、实现步骤以及其在实际应用中的价值。 一、RMI基本概念 1. 远程接口(Remote ...
在IT行业中,分布式应用程序是一种将任务分散到多个计算设备上以提高性能和可扩展性...这个简单的示例展示了RMI的强大功能,而在实际项目中,RMI通常与其他技术如EJB、JMS、Spring等结合使用,构建更复杂的分布式系统。
《基于RMI的Java商品管理系统...它展示了如何通过RMI实现分布式应用,如何设计远程接口和实现,以及如何在无数据库的情况下处理数据。对于想要深入理解Java RMI以及分布式系统开发的开发者,这是一个宝贵的实践案例。
本文将深入探讨“Spring RMI(Remote Method Invocation)应用”,这是Spring框架中用于实现远程方法调用的功能,它使得分布式系统开发变得更加简单。 首先,RMI是Java平台上的一个核心特性,允许在不同JVM之间透明...
这种方式极大地简化了开发分布式应用程序的过程。 Java RMI的核心概念包括: 1. **远程接口(Remote Interface)**:定义了可以在远程对象上调用的方法。这个接口必须继承自`java.rmi.Remote`,并且声明的每个方法...