服务器端代码如下:

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之间不成功,以后有时间再看为什么~

RMI之HelloWorld尝试的更多相关文章

  1. Java RMI之HelloWorld篇

    Java RMI 指的是远程方法调用 (Remote Method Invocation).它是一种机制,能够让在某个 Java 虚拟机上的对象调用另一个 Java 虚拟机中的对象上的方法.可以用此方 ...

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

    Java RMI 指的是远程方法调用 (Remote Method Invocation).它是一种机制,可以让在某个 Java 虚拟机上的对象调用还有一个 Java 虚拟机中的对象上的方法.可以用此 ...

  3. Java RMI之HelloWorld经典入门案例

    Java RMI 指的是远程方法调用 (Remote Method Invocation).它是一种机制,能够让在某个 Java 虚拟机上的对象调用另一个 Java 虚拟机中的对象上的方法.可以用此方 ...

  4. RMI入门HelloWorld

    java RMI(Remote Method Invocation)是一种基于java远程调用技术,是对RPC的java实现,可以在不同主机上进行通信与方法调用.PRC通信原理如图: 方法调用从客户对 ...

  5. Java APi 之 RMI远程方法调用

    一.什么是RPC RPC全称是remote procedure call,即远程过程调用.它是一种协议,用于从远程计算机上请求服务. 例如有两台服务器A和B,A上的应用想要调用B上应用的方法,但是他们 ...

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

    常用命令回顾 帮助命令 1.启动docker //启动 $ systemctl start docker 2.查看docker版本 $ docker version 3.查看安装的docker信息描述 ...

  7. 【Docker】-NO.131.Docker.1 -【Docker】

    Style:Mac Series:Java Since:2018-09-10 End:2018-09-10 Total Hours:1 Degree Of Diffculty:5 Degree Of ...

  8. Apache PredictionIO在Docker上的搭建及使用

    1.Apache PredictionIO介绍 Apache PredictionIO 是一个孵化中的机器学习服务器,它可以为为开发人员和数据科学家创建任何机器学习任务的预测引擎.官方原文: Apac ...

  9. docker系列(二):镜像

    1 引言 将docker与汽车生产线类比,如果说docker引擎是汽车生产车间,那么容器就是最终的产品——汽车,而本节要介绍的镜像就如同汽车设计图纸,其重要性不言而喻——只有有了设计图(镜像),才能生 ...

随机推荐

  1. 设计模式之Singleton

    class Singleton { private Singleton() { } private static Singleton instance; // v0.1 // public stati ...

  2. PHP数据库操作

    PHP实现数据库的增删改查 <?php $conn=mysql_connect('localhost','root','root'); if(!$conn){ echo "connec ...

  3. DOM – (w3school)1.DOM 方法 + 2.DOM属性 + 3.DOM 元素

      1.DOM 方法   一些 DOM 对象方法 这里提供一些您将在本教程中学到的常用方法: 方法 描述 getElementById() 返回带有指定 ID 的元素. getElementsByTa ...

  4. 【PHP自定义显示系统级别的致命错误和用户级别的错误】

    使用方法set_error_handler可以自定义用户级别的错误和系统级别的错误信息显示和处理 用户级别的错误使用trigger_error方法产生一个用户级别的错误信息 代码示例: 系统级别的错误 ...

  5. 【20140113】package 与 import

    一个完整的java源程序应该包括下列部分: package语句: //该部分至多只有一句,必须放在源程序的第一句 import语句: public classDefinition: //公共类定义部分 ...

  6. 攻城狮在路上(叁)Linux(二十八)--- 打包命令:tar

    首先介绍一下tar打包命令的基本格式,下面的三种之间不能混淆. tar [-j|-z] [cv] [-f 新文件名] file1 file2 ...; tar [-j|-z] [tv] [-f 新文件 ...

  7. ORA-1461 encountered when generating server alert SMG-3500

    Doc ID 461911.1 Patch 6602742 Applies to: Oracle Database - Enterprise Edition - Version 10.2.0.3 an ...

  8. android 入门-基础了解

    strings.xml – 文字資源. colors.xml – 顏色資源. dimens.xml – 尺寸資源. arrays.xml – 陣列資源. styles.xml – 樣式資源. #RGB ...

  9. 求数组的长度 C

    对于数组array,计算其占用内存大小和元素个数的方法如下: C/C++ code ? 1 2 3 4 5 //计算占用内存大小 sizeof(array)   //计算数组元素个数 sizeof(a ...

  10. 看懂UML类图与时序图

    看懂UML类图和时序图 这里不会将UML的各种元素都提到,我只想讲讲类图中各个类之间的关系: 能看懂类图中各个类之间的线条.箭头代表什么意思后,也就足够应对 日常的工作和交流: 同时,我们应该能将类图 ...