`
jojo_java
  • 浏览: 96565 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

RMI 应用

    博客分类:
  • JAVA
阅读更多
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.Date;

/**
 * Description:<br>
 * 1.创建远程接口,继承java.rmi.Remote接口
 * 2.创建远程类,实现远程接口
 * 3.创建服务器端程序:负责在rmiregistry注册表中注册远程对象
 * 4.创建客户端程序:负责定位远程对象,并调用远程对象的方法
 * @author JOJO
 * @version 0.1
 */
public interface HelloService extends Remote
{
 
    public String echo (String msg) throws RemoteException;

    public Date getTime () throws RemoteException;
}

 

import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.util.Date;

public class HelloServiceImpl extends UnicastRemoteObject implements HelloService
{

    private String            name;

    protected HelloServiceImpl(String name) throws RemoteException
    {
        this.name = name;

        /*
         * UnicastRemoteObject的构造方法会调用自身的exportObject(Remote obj,int port)。
         * 该方法负责把参数obj指定的对象导出为远程对象,使它具有相应的存根, 并使它能够监听远程客户端的方法调用请求。
         * 参数port指定监听的端口。 如果远程对象已经继承其他类,那么可以在构造方法中调用UnicastRemoteObject的
         * 静态方法exportObject(Remote obj,int port)。
         */
        // UnicastRemoteObject.exportObject(this, 0);
    }

    public String echo (String msg) throws RemoteException
    {
        System.out.println(name + ":调用echo()方法。");
        return "echo:" + msg + " from " + name;
    }

    public Date getTime () throws RemoteException
    {
        System.out.println(name + "调用getTime()方法。");
        return new Date();
    }

}

 

import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;

/**
 * Description:<br>
 * @author JOJO
 * @version 0.1
 */
public class SimpleServer
{
    public static void main (String[] args)
    {
        try
        {
            HelloService service1 = new HelloServiceImpl("service1");
            HelloService service2 = new HelloServiceImpl("service2");
            //创建并导出接受指定 port 请求的本地主机上的 Registry 实例。
            Registry registry = LocateRegistry.createRegistry(1099);
            registry.rebind("HelloService1", service1);
            registry.rebind("HelloService2", service2);
            System.out.println("服务器注册了两个HelloService对象。");
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
}

 

import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;

/**
 * Description:<br>
 * 
 * @author JOJO
 * @version 0.1
 */
public class SimpleClient
{

    public static void main (String[] args)
    {
        try
        {
            // 返回指定的 host 和 port 上对远程对象 Registry 的引用。
            Registry registry = LocateRegistry.getRegistry("127.0.0.1", 1099);
            HelloService service1 = (HelloService) registry.lookup("HelloService1");
            HelloService service2 = (HelloService) registry.lookup("HelloService2");

            System.out.println(service1.echo("hello"));
            System.out.println(service2.getTime());
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }

    }
}

 

分享到:
评论

相关推荐

    RMI应用开发小例子源码.rar

    RMI应用开发的关键步骤包括: 1. **定义接口**:定义RMI服务的接口,其中包含所有需要远程调用的方法。 2. **实现接口**:在服务器端,创建一个实现接口的类,并实现所有方法。 3. **注册服务**:在服务器端,使用` ...

    RMI应用实例及实验报告

    实验报告中可能会详细记录实现RMI应用的步骤,包括设置环境变量、编译源代码、运行RMI服务器和客户端等过程。在实验过程中,可能遇到的问题包括网络配置、权限问题、序列化异常(`RemoteException`)等,这些都是...

    一个java RMI应用实例 构建简单的RMI应用

    创建客户端RMI调用服务端的应用程序。 启动服务端,再启动客户端,测试是否调用成功。 如果客户端和服务端不在同一台电脑上,则需要对刚才定义的服务类采用rmic 编译一个客户端的框架类_stub并拷贝到客户端的类...

    spring rmi应用

    标题“spring rmi应用”指的是在Spring框架中使用Remote Method Invocation (RMI)技术进行分布式服务调用的应用场景。RMI是Java平台提供的一种机制,它允许一个Java对象调用远程计算机上的另一个Java对象的方法,...

    RMI协议的应用与研究

    在开发RMI应用时,常用的工具有JDK自带的RMI注册表(rmiregistry)、`rmic`编译器(用于生成stub和skeleton文件),以及IDE如Eclipse或IntelliJ IDEA中的RMI插件,它们可以帮助开发者更便捷地创建、部署和调试RMI...

    RMI原理及应用详解

    - **网络依赖**: RMI应用对网络的稳定性和性能有较高要求。 - **故障恢复**: 当远程对象或网络出现问题时,恢复机制不够完善。 在实际应用中,开发者需要注意RMI的这些特点,并结合实际情况选择是否使用RMI或其他...

    Eclipse环境下RMI应用实例

    java RMI的一个实例,利用Eclipse开发的简单的银行存取款小程序,运行时需要启动java注册服务rmiregister,然后在两个命令行窗口分别运行服务器类和客户端类,支持局域网内不同机器间的访问

    RMI商品管理系统.zip

    《基于RMI的Java商品管理系统...它展示了如何通过RMI实现分布式应用,如何设计远程接口和实现,以及如何在无数据库的情况下处理数据。对于想要深入理解Java RMI以及分布式系统开发的开发者,这是一个宝贵的实践案例。

    Rmi示例 Rmi代码示例

    综上所述,"Rmi示例 Rmi代码示例"提供了一个基础的RMI应用框架,展示了如何创建、注册远程对象,以及如何在客户端进行调用。通过深入理解和实践这个示例,开发者能够更好地掌握RMI的核心概念和技术,为构建分布式...

    jdk-rmi:jdk原生rmi应用示例

    接下来,我们将详细讨论如何创建和运行一个简单的RMI应用示例: 1. **定义远程接口**: 创建一个接口,如`MyRemoteInterface.java`,并声明远程方法。例如: ```java public interface MyRemoteInterface ...

    spring rmi 简单应用

    在Spring RMI应用中,这些步骤通常会简化为以下步骤: 1. **创建远程接口**:定义一个Java接口,标记为`@Remote`,声明所有要在远程服务器上执行的方法。 ```java import java.rmi.Remote; import java.rmi....

    Java分布式处理技术RMI,JNDI,

    根据 RMI 应用程序各部分职责,可以对应用程序进行分类: 1. 服务器程序:服务器程序将创建多个远程对象,并使每个对象能够被引用。 2. 客户端程序:客户端程序从服务端程序中得到一个或多个远程对象的引用。 3. ...

    rmi.rar_Java RMI_RMI java_RMI policy.all_rmi

    描述中提到的"java rmi例子"表明其中可能包含了一个或多个实际的RMI应用实例,这对于学习和理解RMI的工作原理非常有帮助。 首先,让我们详细了解Java RMI的核心概念和组件: 1. **远程接口(Remote Interface)**...

    分布式实验报告RMI.docx

    RMI 应用程序通常包括两个独立的程序:服务器程序和客户机程序。典型的服务器应用程序将创建多个远程对象,使这些远程对象能够被引用,然后等待客户机调用这些远程对象的方法。而典型的客户机程序则从服务器中得到一...

    基于Java—RMI分布式技术的应用研究.pdf

    开发一个RMI应用包含以下几个部分: (1)远程接口:继承java.rmi.Remote接口,定义远程对象所提供的方法。 (2)远程类:继承UnicastRemoteObject类,并实现远程接口。远程类的构造方法中调用UnicastRemoteObject...

    rmi.rar_rmi

    通过理解以上知识点,你可以创建自己的RMI应用,实现不同JVM间的对象交互,从而构建分布式系统。不过,实际应用中,还应关注RMI与其他技术(如EJB、JMS、JNDI等)的集成,以及现代Java框架(如Spring)中对RMI的支持...

    Spring RMI小例子

    Spring RMI(Remote Method Invocation)是Java平台上的远程方法调用技术,结合Spring框架,能够帮助开发者轻松...实践中,还可以进一步探索如何结合Spring的其他特性,如AOP和事务管理,来增强RMI应用的功能和健壮性。

    java rmi java rmi

    根据提供的文件信息,我们...通过以上步骤,我们成功地实现了一个简单的RMI应用程序,其中包括了远程接口的定义、远程对象的实现、服务器端和客户端的代码实现。这个例子展示了如何利用RMI技术来构建分布式应用程序。

    RMI聊天室-Java实现

    10. **部署与配置**:RMI应用需要正确配置JVM的classpath、rmiregistry的启动、以及可能的防火墙设置,确保客户端能够找到并连接到服务器。 综上所述,"RMI聊天室-Java实现"是一个综合运用了Java RMI技术、多线程、...

Global site tag (gtag.js) - Google Analytics