RMI之HelloWorld尝试

服务器端代码如下:

IHello接口:

import java.rmi.Remote;
import java.rmi.RemoteException;

public interface IHello extends Remote { 

    /**
     * @return return hellowold
     * @throws java.rmi.RemoteException
     */
    public String helloWorld() throws RemoteException; 

    /**
     * @param someBodyName
     * @return say hello to somebody
     * @throws java.rmi.RemoteException
     */
    public String sayHelloToSomeBody(String someBodyName) throws RemoteException;
}

Hello实现:

import java.net.MalformedURLException;
import java.rmi.AlreadyBoundException;
import java.rmi.Naming;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.server.UnicastRemoteObject;

/**
 * @ClassName: HelloImpl
 * @Description: TODO
 * @author: Dorothy
 * @Date: 2014-12-21 00:00:13
 */
public class HelloImpl  extends UnicastRemoteObject implements IHello {
    /**
     *
     * @throws RemoteException
     */
    public HelloImpl() throws RemoteException {
    } 

    /**
     *
     * @return return Hello World!
     * @throws java.rmi.RemoteException
     */
    public String helloWorld() throws RemoteException {
        return "Hello World!";
    } 

    /**
     *
     * @param someBodyName
     * @return say Hello to somebody
     * @throws java.rmi.RemoteException
     */
    public String sayHelloToSomeBody(String someBodyName) throws RemoteException {
        return "Hello " + someBodyName + "!";
    } 

    public static void main(String args[]) { 

        try { 

            IHello rhello = new HelloImpl();
            LocateRegistry.createRegistry(8888);
            Naming.bind("rmi://localhost:8888/RHello",rhello);

            System.out.println(">>>>>INFO:Binding Successfully!");
        } catch (RemoteException e) {
            e.printStackTrace();
        } catch (AlreadyBoundException e) {
            e.printStackTrace();
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }
    }
}

 

 

客户端代码如下:

import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;

/**
 * @ClassName: HelloClient
 * @Description: TODO
 * @author: Dorothy
 * @Date: 2014-12-21 00:06:08
 */
public class HelloClient {
    public static void main(String args[]){
        try {
            IHello rhello =(IHello) Naming.lookup("rmi://localhost:8888/RHello");
            System.out.println(rhello.helloWorld());
            System.out.println(rhello.sayHelloToSomeBody("Dorothy"));
        } catch (NotBoundException e) {
            e.printStackTrace();
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (RemoteException e) {
            e.printStackTrace();
        }
    }
}

同时IHello接口定义,在客户端也要有。

 

在linux机器之间测试通过,windows和linux之间不成功,以后有时间再看为什么~

时间: 2024-10-07 09:09:47

RMI之HelloWorld尝试的相关文章

Java RMI之HelloWorld篇

Java RMI之HelloWorld篇 Java RMI 指的是远程方法调用 (Remote Method Invocation).它是一种机制,能够让在某个 Java 虚拟机上的对象调用另一个 Java 虚拟机中的对象上的方法.可以用此方法调用的任何对象必须实现该远程接口. Java RMI不是什么新技术(在Java1.1的时代都有了),但却是是非常重要的底层技术. 大名鼎鼎的EJB都是建立在rmi基础之上的,现在还有一些开源的远程调用组件,其底层技术也是rmi. 在大力鼓吹Web Serv

Java RMI之HelloWorld程序以及相关的安全管理器的知识

Java RMI 指的是远程方法调用 (Remote Method Invocation).它是一种机制,可以让在某个 Java 虚拟机上的对象调用还有一个 Java 虚拟机中的对象上的方法.可以用此方法调用的不论什么对象必须实现该远程接口. Java RMI不是什么新技术(在Java1.1的时代都有了),但却是是很重要的底层技术. 大名鼎鼎的EJB都是建立在RMI基础之上的,如今另一些开源的远程调用组件,其底层技术也是RMI. 在大力鼓吹Web Service.SOA的时代,是不是每一个应用都

RMI JDK

创建接口 /**  * 定义一个远程接口,必须继承Remote接口  */ public interface HelloService extends Remote {     /**      * 需要远程调用的方法必须抛出RemoteException异常      * @param msg      * @return      * @throws RemoteException      */     String sayHello(String msg) throws RemoteEx

rmi经典实例---远程调用简单实现方式

Java RMI之HelloWorld篇 Java RMI 指的是远程方法调用 (Remote Method Invocation).它是一种机制,能够让在某个 Java 虚拟机上的对象调用另一个 Java 虚拟机中的对象上的方法.可以用此方法调用的任何对象必须实现该远程接口. Java RMI不是什么新技术(在Java1.1的时代都有了),但却是是非常重要的底层技术. 大名鼎鼎的EJB都是建立在rmi基础之上的,现在还有一些开源的远程调用组件,其底层技术也是rmi. 在大力鼓吹Web Serv

Docker系列之基础实践篇(上)

常用命令回顾 帮助命令 1.启动docker //启动 $ systemctl start docker 2.查看docker版本 $ docker version 3.查看安装的docker信息描述(容器多少,镜像多少等等) docker info 4.docker帮助命令(基本上docker的所有命令都有) docker --help 此处比较长就不截图了,可自行查看 镜像命令 1.查看本地镜像 $ docker images docker images -qa //返回镜像Id 2.配置阿

docker使用1

1.5.docker序幕篇[上] 1.5.1 在Win10上准备centos7 和大家说明一下,我们的目的仅仅是要安装一个centos7,然后在centos7上安装docker ? 如果搞不定vagrant+virtualbox的方式,也可以直接使用VM搭建一个centos7 ? 或者你可以直接使用一台云服务器,上面安装了centos7 ? 毕竟我们的目的只是为了得到一个centos7的机器,所以不必花太多精力在这个问题上折腾 ? 我上课用的环境是 [   win10 64位   Virtual

docker学习(8) 在mac机上搭建私有仓库

docker的私有仓库类似maven的私服,一般用于公司内部搭建一个类似docker hub的环境,这样上传.下载镜像速度较快,本文将演示如何在mac上利用docker-machine搭建无需SSL证书的私有仓库. 一.查看docker-machine虚拟机IP docker-machine ip default 默认情况下docker-toolbox创建的虚拟机名称为default,如果您的虚拟机名字不是这个,上面命令最后的default换成真实的虚拟机名字,假设default分配的IP为19

C 语言学习的第 03 课:你的 idea 是怎么变成能够执行的程序的

在上一篇文章中,我们说到,C 语言系统应该由程序开发环境,C 语言本身和 C 语言的库组成.且同时说了程序开发环境做了“编写”,“预处理”,“编译”和“链接”这几件事情.但是细节并没有一一呈现.不知道同学们是否想过,这里都经历了一些什么呢?! 在这一篇文章中,我们就来看看“上帝说,要有光,就有了光.”是怎么实现的.假设你是上帝,想要实现“给我输出 'HELLO,WORLD!'”.同学们使用的 IDE 是 C-Free 5,这里的所有操作,都以此编译器为例.假设编译器安装路径为“C:\Progra

Docker安装环境

■原则: 不需要去网上寻找各种安装攻略,直接去官网上查找文档就可以. 操作途中遇到问题的时候,可以通过网上查找问题及解决方法. ■Docker文档 1)在搜索引擎(百度等)搜索Docker官网. 2)官网中点击Docs连接,进入相关的帮助文档界面.学会通过官网提供的文档了解某项技术. 3)选择在Linux上安装Docker. 4)选择Linux操作系统.我这里使用的是RedHad. 5)按照官网提供的命令安装就可以. 笔者思路: 任何一门相对程序新技术,在对外发布的新版本时候,都会提供相应的使用