1.创建远程接口
package com.wilian.rmi.server; import java.rmi.Remote; import java.rmi.RemoteException; public interface HelloWorld extends Remote{//必须继承Remote接口 //必须要抛出RemoteExcepttion的异常,不然启动远程服务时会报错java.rmi.server.ExportException: remote object implements illegal remote interface; String sayHello(String name) throws RemoteException; }
2.创建远程对象
package com.wilian.rmi.server; import java.rmi.RemoteException; import java.rmi.server.UnicastRemoteObject; public class HelloWorldImpl extends UnicastRemoteObject implements HelloWorld { protected HelloWorldImpl() throws RemoteException {} @Override public String sayHello(String name) throws RemoteException { return "Hello "+name; } }
3.创建远程服务器
package com.wilian.rmi.server; import java.rmi.RemoteException; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; public class HelloWorldServer { public static void main(String[] args) { try { HelloWorld hello=new HelloWorldImpl(); Context namingContext=new InitialContext(); //使用本地JNDI注册服务,注册格式为rmi://host//服务名,如果JNDI服务器在与远程服务器在同一机器可省略掉host namingContext.rebind("rmi:HelloWorld", hello); System.out.println("服务器注册了一个HelloWorld对象"); } catch (RemoteException e) { e.printStackTrace(); } catch (NamingException e) { e.printStackTrace(); } } }
4.创建客户端程序
package com.wilian.rmi.client; import java.rmi.RemoteException; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import com.wilian.rmi.server.HelloWorld; public class HelloWorldClient { public static void main(String[] args) { String url="rmi://localhost/"; try { Context namingContext = new InitialContext(); //从JNDI服务器上寻找对应的服务 HelloWorld hello = (HelloWorld)namingContext.lookup(url+"HelloWorld"); System.out.println(hello.getClass().getName()); System.out.println(hello.sayHello("wilian")); } catch (NamingException e) { e.printStackTrace(); } catch (RemoteException e) { e.printStackTrace(); } } }
5.运行程序
启动JNDI服务:start rmiregistry 如果是用eclipse进行开发必须到工程对应的bin目录下进行启动,否则会报HelloWorld类无法找到
启动服务端
启动客户端
运行截图
相关推荐
RMI-iiop版HelloWorld,dos命令行下执行。感谢http://lavasoft.blog.51cto.com/62575/240666和http://blog.csdn.net/konglong_c/article/details/4972447,希望给大家提供帮助。
NULL 博文链接:https://dannyhz.iteye.com/blog/2300802
这个"java rmi HelloWorld版(源码)"的压缩包文件提供了一个简单的RMI应用示例,帮助开发者了解和学习RMI的基本原理和使用。 RMI的核心概念包括: 1. **远程接口(Remote Interface)**:这是定义远程方法的接口...
**标题解析:** "JMX HelloWorld Download" 指的是一个关于Java Management Extensions(JMX)的简单示例,可能是用于教学或演示如何在Java应用中使用JMX技术。"Download"表明这是一个可以下载的资源,可能包含了...
<create class="com.example.HelloWorld" javascript="HelloWorld"> ``` 这段配置表示允许JavaScript创建一个名为`HelloWorld`的对象,并可以调用其中的`getName`方法。 3. **创建Java类**:创建一个名...
**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的源码层面...
Naming.bind("rmi://localhost:8888/helloWorld", helloWorld); System.out.println("远程服务对象绑定成功---->"); } catch (RemoteException | AlreadyBoundException e) { e.printStackTrace(); } } } ``` ...
public class HelloWorldImpl extends UnicastRemoteObject implements HelloWorld { public HelloWorldImpl() throws RemoteException { super(); } @Override public String sayHello() { return "Hello, ...
客户端程序`Helloworld`通过`Naming.lookup()`方法从RMI注册表中查找并获取`HelloIn`接口的实例。`lookup`方法接受一个URL形式的字符串,指定了远程对象的名称和主机。然后,客户端可以像操作本地对象一样调用`...
在"rmi_helloworld"这个小程序中,可能包含了以下步骤: 1. 定义一个远程接口,声明远程方法。 2. 创建实现远程接口的类,并实现远程方法。 3. 在服务器端启动RMI注册表,将远程对象导出并注册到注册表中。 4. 在...
【Dubbo_Demo_HelloWorld】是一个典型的Dubbo学习示例,它涵盖了服务提供者(Service Provider)、服务消费者(Service Consumer)以及Dubbo的核心API使用。这个Demo旨在帮助初学者理解Dubbo的基本工作原理和核心...
在这个例子中,服务器创建了一个实现HelloWorld接口的远程对象,并将其绑定到RMI注册表。客户端则通过RMI注册表查找并调用了远程对象的sayHello方法。 总结,RMI是Java平台中强大的分布式计算工具,它简化了跨JVM的...
#### 三、RMI HelloWorld 示例分析 为了更好地理解RMI的工作原理,我们可以通过一个简单的HelloWorld示例来进行分析。 ##### 1. 文件结构与目录设置 在这个示例中,所有的Java源文件都位于`example.hello`包下,...
"Hello.java"和"HelloWorld.java"可能是示例类,用于演示RMI和JMX的使用。它们可能包含了简单的远程方法,或者展示了如何创建和注册MBean。 为了实现远程连接JVM并获取JVM参数,首先需要在服务器端启动JMX服务,并...
System.out.println(remoteService.doSomething("Hello World")); ``` 6. **源码分析**:在提供的压缩包文件`SpringRMI`中,可能包含了上述所有步骤的代码示例。通过阅读这些源码,你可以深入理解Spring RMI的...
在这个"springMVC+spring+dubbo hello world测试项目"中,我们可以期待看到以下主要目录和文件: 1. `src/main/java`:包含项目的源代码,可能有如com.example.demo包,下设Service、Controller和配置类等。 2. `...
System.out.println(hello.sayHello("World")); // 调用远程方法 } catch (Exception e) { e.printStackTrace(); } } } ``` 这个简单的RMI实例展示了如何创建远程对象、启动RMI服务器、以及从客户端调用远程...
System.out.println(remote.hello("World")); } catch (Exception e) { e.printStackTrace(); } } } ``` 以上就是RMI的基本原理和使用方法。在实际开发中,可以通过阅读"RMI 初步研究报告.doc"文档,深入了解...