1、首先定义服务器上要发布出去的接口,要继承Remote接口。
package org.autumn.rmi.client;
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface IHello extends Remote {
String say() throws RemoteException;
}
2、在服务器上实现这个接口,要继承UnicastRemoteObject类。
package org.autumn.rmi.server;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import org.autumn.rmi.client.IHello;
public class HelloImpl extends UnicastRemoteObject implements IHello {
private static final long serialVersionUID = -22963382911437689L;
public HelloImpl() throws RemoteException {
super();
}
@Override
public String say() throws RemoteException {
return "hello from remote server";
}
}
3、在服务器上开启目录服务,并注册该实现类。
package org.autumn.rmi.server;
import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.RMISecurityManager;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import org.autumn.rmi.client.IHello;
public class HelloServer {
public static void main(String[] args) {
System.setProperty("java.security.policy", "F:\\Server.policy");
if (System.getSecurityManager() == null) {
System.setSecurityManager(new RMISecurityManager());
}
try {
LocateRegistry.createRegistry(1099);
IHello hello = new HelloImpl();
Naming.rebind("rmi://192.168.0.193:1099/hello", hello);
} catch (RemoteException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
}
Server.policy文件内容如下:
grant
{
permission java.net.SocketPermission
"*:1000-9999","accept,connect,listen,resolve";
};
4、将服务器对外发布的接口拷贝到客户端,包括包名。
5、客户端调用程序。
package org.autumn.rmi.client;
import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RMISecurityManager;
import java.rmi.RemoteException;
public class HelloClient {
public static void main(String[] args) {
System.setProperty("java.security.policy", "F:\\Client.policy");
if (System.getSecurityManager() == null) {
System.setSecurityManager(new RMISecurityManager());
}
try {
IHello hello = (IHello) Naming.lookup("rmi://192.168.0.193:1099/hello");
System.out.println(hello.say());
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (RemoteException e) {
e.printStackTrace();
} catch (NotBoundException e) {
e.printStackTrace();
}
}
}
Client.policy文件内容如下:
grant
{
permission java.net.SocketPermission
"*:1000-9999","accept,connect,listen,resolve";
};
5、跑HelloServer类,启动服务器服务。跑HelloClient类,进行客户端RMI调用。
输出:hello from remote server
分享到:
相关推荐
RMI-iiop版HelloWorld,dos命令行下执行。感谢http://lavasoft.blog.51cto.com/62575/240666和http://blog.csdn.net/konglong_c/article/details/4972447,希望给大家提供帮助。
这个"java rmi HelloWorld版(源码)"的压缩包文件提供了一个简单的RMI应用示例,帮助开发者了解和学习RMI的基本原理和使用。 RMI的核心概念包括: 1. **远程接口(Remote Interface)**:这是定义远程方法的接口...
**标题解析:** "JMX HelloWorld Download" 指的是一个关于Java Management Extensions(JMX)的简单示例,可能是用于教学或演示如何在Java应用中使用JMX技术。"Download"表明这是一个可以下载的资源,可能包含了...
在"Hello, World!"的例子中,我们将了解如何使用dwr.jar来创建一个简单的交互应用。 首先,我们需要理解DWR的基本工作原理。DWR的核心功能是通过JSON或XML格式在客户端(浏览器)和服务器端之间交换数据。它提供了...
NULL 博文链接:https://dannyhz.iteye.com/blog/2300802
**DWR(Direct Web Remoting)入门教程之HelloWorld** DWR是一款开源的Java库,它允许在浏览器和服务器之间进行实时的、双向的通信,实现了JavaScript与Java之间的直接调用,极大地简化了Web应用程序的开发。DWR的...
本文将基于"Dubbo入门之HelloWorld"的主题,深入探讨如何从零开始学习并实践Dubbo的基本用法。 首先,我们需要了解什么是RPC(Remote Procedure Call)。RPC是一种使程序可以调用另一个系统中的函数或方法的技术,...
5. **"HelloWorld"示例**:具体展示了如何创建一个简单的"HelloWorld"服务,例如定义一个返回字符串的`sayHello`方法,然后在客户端调用这个方法并打印出结果。 6. **源码分析**:博主可能深入到Hessian的源码层面...
在这个"JAVA RMI实现程序实例"中,我们将会探讨如何使用RMI实现一个简单的“Hello, World”示例,并已经在两台机器上进行了成功的测试。 首先,我们需要了解RMI的基本概念。RMI的核心思想是将对象的方法调用转化为...
客户端程序`Helloworld`通过`Naming.lookup()`方法从RMI注册表中查找并获取`HelloIn`接口的实例。`lookup`方法接受一个URL形式的字符串,指定了远程对象的名称和主机。然后,客户端可以像操作本地对象一样调用`...
return "Hello, RMI!"; } } ``` 3. **编写服务器端代码**: ```java public class HelloServerMain { public static void main(String[] args) { try { HelloIFC hello = new HelloServer(); ...
在这个例子中,服务器创建了一个实现HelloWorld接口的远程对象,并将其绑定到RMI注册表。客户端则通过RMI注册表查找并调用了远程对象的sayHello方法。 总结,RMI是Java平台中强大的分布式计算工具,它简化了跨JVM的...
RMI(Remote Method Invocation,远程方法调用)是Java平台中的一个重要特性,它允许Java对象在不同的Java虚拟机之间进行通信,实现分布式计算。RMI是Java开发分布式应用程序的基础,尤其在构建分布式服务和微服务...
System.out.println(hello.sayHello("World")); // 调用远程方法 } catch (Exception e) { e.printStackTrace(); } } } ``` 这个简单的RMI实例展示了如何创建远程对象、启动RMI服务器、以及从客户端调用远程...
String result = myRemoteService.doSomething("Hello, RMI!"); System.out.println(result); } ``` 通过这种方式,Spring使得RMI的使用变得非常简洁,同时增加了服务的可测试性和可管理性。在实际项目中,我们...
String result = myRemoteService.doSomething("Hello, RMI"); System.out.println(result); } ``` 除了XML配置,Spring还支持基于Java的配置方式,使用`@ServiceExporter`和`@RmiClient`注解。此外,Spring还...
#### 三、RMI HelloWorld 示例分析 为了更好地理解RMI的工作原理,我们可以通过一个简单的HelloWorld示例来进行分析。 ##### 1. 文件结构与目录设置 在这个示例中,所有的Java源文件都位于`example.hello`包下,...
HelloInterface hello = new Hello("Hello, world!"); LocateRegistry.createRegistry(1099); Naming.rebind("Hello", hello); ``` 这里,`"Hello"`是注册的名称,`hello`是远程对象的实例。 4. **客户端查找远程...