rmi调用一般过程:
接口:
package com.zhang.rmi;
import java.rmi.Remote;
import java.rmi.RemoteException;
/**
* 实现Remote接口,定义的方法都需要抛出RemoteException
* <p />
*
* @author Administrator
*/
public interface TestRmiInterface extends Remote {
String concat(String a, String b) throws RemoteException;
}
实现类:
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
/**
* 继承UnicastRemoteObject类,实现TestRmiInterface接口
* <p />
*
* @author Administrator
*/
public class TestRmiImpl extends UnicastRemoteObject implements TestRmiInterface {
private static final long serialVersionUID = 7060916499195401961L;
/**
* 显式定义构造方法,需要抛出RemoteExcepiton
*
* @throws RemoteException
*/
protected TestRmiImpl() throws RemoteException {
super();
}
/**
* {@inheritDoc}
*/
@Override
public String concat(String a, String b) {
//System.out.println(a+b);
return a + b;
}
}
服务器端:
package com.zhang.rmi;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
public class Server {
public Server(){
TestRmiInterface testRmi = null;
Registry registry = null;
try {
registry = LocateRegistry.createRegistry(1099);
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
testRmi = new TestRmiImpl();
registry.rebind("rmi://localhost:1099/testServer", testRmi);
} catch (RemoteException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
public static void main(String[] args) {
// if(System.getSecurityManager() == null){
// System.out.println("SecurityManager is null");
// System.setSecurityManager(new RMISecurityManager());
// }
new Server();
System.out.println("server ready");
}
}
客户端:
package com.zhang.rmi;
import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
public class Client {
public static void main(String[] args) {
try {
Registry registry = LocateRegistry.getRegistry(1099);
TestRmiInterface testRmi = (TestRmiInterface) registry.lookup("rmi://localhost:1099/testServer");
String test = testRmi.concat("hello", "rmi");
System.out.println(test);
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NotBoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
分享到:
相关推荐
这个"JAVA RMI简单例子"旨在帮助我们深入理解RMI的基本原理和实现步骤。 RMI的核心概念包括远程接口、远程对象和RMIC编译器。首先,我们需要定义一个远程接口,该接口声明了可以在远程服务器上执行的方法。这些方法...
以下是对"java RMI简单例子"的详细解释: 1. **RMI的基本概念**: - **远程对象**:在RMI中,一个对象如果可以在不同的JVM上执行其方法,那么就被称为远程对象。 - **远程接口**:定义远程对象需要实现的接口,...
远程服务的接口定义 远程服务接口的具体实现 桩(Stub)和框架... 一个RMI命名服务,它允许客户端去发现这个远程服务 类文件的提供者(一个HTTP或者FTP服务器) 一个需要这个远程服务的客户端程序
这个简单的示例展示了如何创建一个基本的Java RMI应用程序,包括远程接口、服务器端和客户端。 首先,我们来看远程接口。在这个例子中,`HelloIn`接口定义了一个方法`sayHello()`,该方法抛出`RemoteException`。这...
Java RMI(Remote Method Invocation,远程方法调用)是Java平台提供的一种分布式计算技术,它允许在不同网络节点上的Java对象之间进行透明的交互。在Java RMI中,一个对象可以调用另一个位于不同JVM(Java虚拟机)...
通过这个简单的实例,学习者可以了解到Java RMI的基本工作流程,以及如何在实践中部署和使用远程对象。深入研究后,还可以探索更复杂的场景,如并发调用、安全性控制、容错机制等,以构建更加健壮和高效的分布式系统...
创建客户端RMI调用服务端的应用程序。 启动服务端,再启动客户端,测试是否调用成功。 如果客户端和服务端不在同一台电脑上,则需要对刚才定义的服务类采用rmic 编译一个客户端的框架类_stub并拷贝到客户端的类...
Java RMI实例
### Java RMI基础知识与示例解析 ...通过以上详细分析,我们可以清楚地了解到如何使用Java RMI来实现简单的分布式应用。尽管RMI在现代Java开发中的使用频率不高,但了解其基本原理和技术细节仍然具有一定的价值。
在这个“基于JAVA RMI的聊天室”项目中,开发者利用RMI技术构建了一个简单的多用户交互系统,让用户可以在不同的计算机上进行实时聊天。 ### 1. JAVA RMI原理 RMI允许Java对象在不同的Java虚拟机之间进行方法调用...
这个简单的例子将引导我们了解如何利用Java RMI实现远程调用。 首先,我们要创建远程接口。在Java RMI中,远程接口是一个实现了`java.rmi.Remote`接口的Java接口。接口中声明的方法将在客户端调用,实际上会在...
根据提供的文件信息,我们可以深入探讨Java RMI(Java Remote Method Invocation)的相关知识点,包括其概念、原理、体系结构以及一个具体的示例。...这个例子展示了如何利用RMI技术来构建分布式应用程序。
这个可运行实例是一个实际应用RMI概念的示例,它展示了如何构建和运行一个简单的分布式系统。在本文中,我们将深入探讨Java RMI的工作原理、关键组件以及如何创建和运行一个RMI应用程序。 首先,理解Java RMI的基本...
这个"java_rmi.rar"压缩包包含的资源可能是一个Java RMI的实例教程或者代码示例。"www.pudn.com.txt"可能是一个包含相关说明或者下载链接的文本文件,而"rmi"可能是包含具体RMI示例代码的文件夹。 在RMI的基本流程...
在这个"JAVA RMI实现程序实例"中,我们将会探讨如何使用RMI实现一个简单的“Hello, World”示例,并已经在两台机器上进行了成功的测试。 首先,我们需要了解RMI的基本概念。RMI的核心思想是将对象的方法调用转化为...
在Java RMI实例中,我们通常会经历以下几个步骤: 1. **创建远程接口**:首先,我们需要定义一个远程接口,这个接口需要扩展`java.rmi.Remote`。远程接口中的所有方法都需要抛出`RemoteException`,这是因为远程...
Java Remote Method Invocation(Java RMI)是Java编程语言中用于在网络间进行远程对象调用的技术。它是Java平台的标准部分,允许程序员在分布式环境中调用对象的方法,就像它们在同一台计算机上一样。Java RMI对于...
java rmi spring 使用实例,内涵服务端和客户端的源代码,测试可用。
- RMI默认使用简单认证,可以通过设置Java安全策略加强安全性。 - 为RMI连接启用SSL可以提供加密通信,防止中间人攻击。 7. **性能优化**: - 使用Stub和Skeleton机制可以减少网络传输的数据量。 - 考虑使用RMI...