`
cutesunshineriver
  • 浏览: 200535 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Hello World on RMI

rmi 
阅读更多
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测试helloWorld

    RMI-iiop版HelloWorld,dos命令行下执行。感谢http://lavasoft.blog.51cto.com/62575/240666和http://blog.csdn.net/konglong_c/article/details/4972447,希望给大家提供帮助。

    java rmi HelloWorld版(源码)

    这个"java rmi HelloWorld版(源码)"的压缩包文件提供了一个简单的RMI应用示例,帮助开发者了解和学习RMI的基本原理和使用。 RMI的核心概念包括: 1. **远程接口(Remote Interface)**:这是定义远程方法的接口...

    JMX HelloWorld Download

    **标题解析:** "JMX HelloWorld Download" 指的是一个关于Java Management Extensions(JMX)的简单示例,可能是用于教学或演示如何在Java应用中使用JMX技术。"Download"表明这是一个可以下载的资源,可能包含了...

    dwr.jar编写helloworld

    在"Hello, World!"的例子中,我们将了解如何使用dwr.jar来创建一个简单的交互应用。 首先,我们需要理解DWR的基本工作原理。DWR的核心功能是通过JSON或XML格式在客户端(浏览器)和服务器端之间交换数据。它提供了...

    rmi 的hello world 例子

    NULL 博文链接:https://dannyhz.iteye.com/blog/2300802

    DWR入门教程之HelloWorld

    **DWR(Direct Web Remoting)入门教程之HelloWorld** DWR是一款开源的Java库,它允许在浏览器和服务器之间进行实时的、双向的通信,实现了JavaScript与Java之间的直接调用,极大地简化了Web应用程序的开发。DWR的...

    Dubbo入门之HelloWorld

    本文将基于"Dubbo入门之HelloWorld"的主题,深入探讨如何从零开始学习并实践Dubbo的基本用法。 首先,我们需要了解什么是RPC(Remote Procedure Call)。RPC是一种使程序可以调用另一个系统中的函数或方法的技术,...

    Hessian HelloWorld篇

    5. **"HelloWorld"示例**:具体展示了如何创建一个简单的"HelloWorld"服务,例如定义一个返回字符串的`sayHello`方法,然后在客户端调用这个方法并打印出结果。 6. **源码分析**:博主可能深入到Hessian的源码层面...

    JAVA RMI实现程序实例

    在这个"JAVA RMI实现程序实例"中,我们将会探讨如何使用RMI实现一个简单的“Hello, World”示例,并已经在两台机器上进行了成功的测试。 首先,我们需要了解RMI的基本概念。RMI的核心思想是将对象的方法调用转化为...

    Java RMI 简单示例

    客户端程序`Helloworld`通过`Naming.lookup()`方法从RMI注册表中查找并获取`HelloIn`接口的实例。`lookup`方法接受一个URL形式的字符串,指定了远程对象的名称和主机。然后,客户端可以像操作本地对象一样调用`...

    java rmi java rmi

    return "Hello, RMI!"; } } ``` 3. **编写服务器端代码**: ```java public class HelloServerMain { public static void main(String[] args) { try { HelloIFC hello = new HelloServer(); ...

    RMI相关知识及其实例

    在这个例子中,服务器创建了一个实现HelloWorld接口的远程对象,并将其绑定到RMI注册表。客户端则通过RMI注册表查找并调用了远程对象的sayHello方法。 总结,RMI是Java平台中强大的分布式计算工具,它简化了跨JVM的...

    Rmi示例 Rmi代码示例

    RMI(Remote Method Invocation,远程方法调用)是Java平台中的一个重要特性,它允许Java对象在不同的Java虚拟机之间进行通信,实现分布式计算。RMI是Java开发分布式应用程序的基础,尤其在构建分布式服务和微服务...

    rmi实例详解

    System.out.println(hello.sayHello("World")); // 调用远程方法 } catch (Exception e) { e.printStackTrace(); } } } ``` 这个简单的RMI实例展示了如何创建远程对象、启动RMI服务器、以及从客户端调用远程...

    SpringRMI小例子

    String result = myRemoteService.doSomething("Hello, RMI!"); System.out.println(result); } ``` 通过这种方式,Spring使得RMI的使用变得非常简洁,同时增加了服务的可测试性和可管理性。在实际项目中,我们...

    spring中使用RMI

    String result = myRemoteService.doSomething("Hello, RMI"); System.out.println(result); } ``` 除了XML配置,Spring还支持基于Java的配置方式,使用`@ServiceExporter`和`@RmiClient`注解。此外,Spring还...

    Java RMI Tutorial.pdf

    #### 三、RMI HelloWorld 示例分析 为了更好地理解RMI的工作原理,我们可以通过一个简单的HelloWorld示例来进行分析。 ##### 1. 文件结构与目录设置 在这个示例中,所有的Java源文件都位于`example.hello`包下,...

    JAVARMI实例[文].pdf

    HelloInterface hello = new Hello("Hello, world!"); LocateRegistry.createRegistry(1099); Naming.rebind("Hello", hello); ``` 这里,`"Hello"`是注册的名称,`hello`是远程对象的实例。 4. **客户端查找远程...

Global site tag (gtag.js) - Google Analytics