`
bigboy
  • 浏览: 169906 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

RMI版HelloWorld

 
阅读更多

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类无法找到 

    启动服务端

    启动客户端

    运行截图

    

 

  • 大小: 39.4 KB
分享到:
评论

相关推荐

    RMI测试helloWorld

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

    rmi 的hello world 例子

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

    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

    <create class="com.example.HelloWorld" javascript="HelloWorld"> ``` 这段配置表示允许JavaScript创建一个名为`HelloWorld`的对象,并可以调用其中的`getName`方法。 3. **创建Java类**:创建一个名...

    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的源码层面...

    rmi学习笔记(1)

    Naming.bind("rmi://localhost:8888/helloWorld", helloWorld); System.out.println("远程服务对象绑定成功---->"); } catch (RemoteException | AlreadyBoundException e) { e.printStackTrace(); } } } ``` ...

    JAVA RMI实现程序实例

    public class HelloWorldImpl extends UnicastRemoteObject implements HelloWorld { public HelloWorldImpl() throws RemoteException { super(); } @Override public String sayHello() { return "Hello, ...

    Java RMI 简单示例

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

    RMI基础代码小程序

    在"rmi_helloworld"这个小程序中,可能包含了以下步骤: 1. 定义一个远程接口,声明远程方法。 2. 创建实现远程接口的类,并实现远程方法。 3. 在服务器端启动RMI注册表,将远程对象导出并注册到注册表中。 4. 在...

    Dubbo_Demo_HelloWorld

    【Dubbo_Demo_HelloWorld】是一个典型的Dubbo学习示例,它涵盖了服务提供者(Service Provider)、服务消费者(Service Consumer)以及Dubbo的核心API使用。这个Demo旨在帮助初学者理解Dubbo的基本工作原理和核心...

    RMI相关知识及其实例

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

    Java RMI Tutorial.pdf

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

    使用RMI远程连接JVM.用JMX获取JVM的参数

    "Hello.java"和"HelloWorld.java"可能是示例类,用于演示RMI和JMX的使用。它们可能包含了简单的远程方法,或者展示了如何创建和注册MBean。 为了实现远程连接JVM并获取JVM参数,首先需要在服务器端启动JMX服务,并...

    spring rmi 小例子

    System.out.println(remoteService.doSomething("Hello World")); ``` 6. **源码分析**:在提供的压缩包文件`SpringRMI`中,可能包含了上述所有步骤的代码示例。通过阅读这些源码,你可以深入理解Spring RMI的...

    springMVC+spring+dubbo hello world测试项目

    在这个"springMVC+spring+dubbo hello world测试项目"中,我们可以期待看到以下主要目录和文件: 1. `src/main/java`:包含项目的源代码,可能有如com.example.demo包,下设Service、Controller和配置类等。 2. `...

    rmi实例详解

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

    RMI demo

    System.out.println(remote.hello("World")); } catch (Exception e) { e.printStackTrace(); } } } ``` 以上就是RMI的基本原理和使用方法。在实际开发中,可以通过阅读"RMI 初步研究报告.doc"文档,深入了解...

Global site tag (gtag.js) - Google Analytics