`
sunasheng
  • 浏览: 122604 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Java实现远程访问(RMI-Naming)

阅读更多

Java实现远程访问(RMI-Naming

1,编写服务器接口

新建项目:ITest,编写接口IServer ,有几点有求:

(1)接口必须实现类Remote

(2)接口中的方法必须抛出异常RemoteException

package cn.sun.server;

 

import java.rmi.Remote;

import java.rmi.RemoteException;

 

public interface IServer extends Remote{

int add(int a,int b)throws RemoteException;

}

2,编写实现端

新建项目:ImplTest,编写实现类ServerImpl有几点有求:

(1)实现类必须继承类UnicastRemoteObject  

(2)必须有空的实现且抛出异常RemoteException 

package cn.sun.impl;

 

import java.rmi.RemoteException;

import java.rmi.server.UnicastRemoteObject;

import cn.sun.server.IServer;

 

public class ServerImpl extends UnicastRemoteObject implements IServer {

public ServerImpl() throws RemoteException {

}

public int add(int a, int b) {

return a+b;

}

}

注意:此工程中的接口的实现要依赖于工程ITest中的接口,所以本工程必须从build path中导入工程ITest,具体方法如下:在工程名ImplTest上点击右键选择Build Path,选择Configure Build Path,在Projects这一项中Add项目ITest

3,编写容器端

说明:接口和实现类都是运行在服务器端的,所以要有一个容器来运行接口和实现类,所以也要开启容器的服务。

新建项目:Host,编写容器类Host,开启服务有几个步骤:

(1)通过类LocateRegistry的方法createRegistry(port)来绑定端口

(2)实例化接口IServer iServer = new ServerImpl();

(3)将实例绑定到接服务中,通过Namingrebind("//127.0.0.1:1009/绑定名" , 所绑定的实例)方法实现;

package cn.sun.host;

 

import cn.sun.impl.ServerImpl;

import cn.sun.server.IServer;

import java.rmi.Naming;

import java.rmi.registry.LocateRegistry;

public class Host {

public static void main(String[] args)throws Exception

{

LocateRegistry.createRegistry(1009);//绑定端口

IServer iServer = new ServerImpl();

Naming.rebind("//127.0.0.1:1009/iServer" , iServer);

}

}

注意:此工程中的容器的实现要依赖于工程ITest中的接口和工程ImplTest中的实现类,所以本工程必须从build path中导入工程ITest和工程ImplTest,具体方法跟上面类似。

4,编写客户端

说明:客户端是运行在客户端服务器的,所以对于服务器上的程序要进行远程访问。

新建项目:Client,编写客户端类Client,实现远程访问有几个步骤:

(1)通过Naming类的lookup(//IP:port/绑定名)方法来远程获取接口的实例

(2)通过接口的实例就可以调用接口实现中的方法

package cn.sun.client;

import java.rmi.Naming;

import cn.sun.server.IServer;

public class Client {

public static void main(String [] args)throws Exception

{

IServer iServer = (IServer)Naming.lookup("//127.0.0.1:1009/iServer");

System.out.println(iServer.add(5, 6));

}

}

注意:此工程中的远程访问的实现只需依赖于工程ITest中的接口,所以本工程必须从build path中导入工程ITest,具体方法跟上面类似。

5,程序的运行

(1)运行Host工程中的Host类中的main方法(开启服务器端容器的服务)

(2)运行客户端

 

 

分享到:
评论

相关推荐

    RMI-Java.rar_Java RMI

    通过分析和运行"RMI-Java.rar"中的示例代码,你可以亲手体验RMI的工作流程,了解如何设置服务器、注册远程对象、创建客户端以及调用远程方法。这将帮助你更深入地掌握Java RMI技术,并能够在实际项目中灵活运用。

    rmi-demo.zip_DEMO_Java RMI_rmi

    3. **导出远程对象**:在服务器端,你需要创建远程对象的实例,并使用`java.rmi.Naming`或`java.rmi.server.UnicastRemoteObject`类的静态方法将其导出到RMI系统。导出后,远程对象将有一个可从网络访问的引用。 4....

    RMI - Java远程方法调用

    ` Naming.lookup("rmi://hostname:port/name")` 返回远程对象的引用。 7. **客户端调用(Client Invocation)**:客户端通过引用调用远程对象的方法,Java RMI会处理网络通信、序列化和反序列化等细节。 8. **异常...

    java_rmi.rar_RMI java_java.rmi

    2. **实现远程接口**:然后,创建一个实现远程接口的类,该类通常需要继承自`java.rmi.Remote`接口,并且抛出`java.rmi.RemoteException`。在这个实现类中,你需要实现远程接口中的所有方法。 3. **创建并注册远程...

    基于JavaRMI的分布对象负载均衡研究与实现.pdf

    JNDI提供了一个统一的接口,使得客户端可以按照Java2标准访问RMI-DOLB系统。远程对象扩展部分采用了RMI可激活对象,这种方法可以避免服务器资源的过度占用。此外,RMI负载均衡服务器不仅提供负载均衡服务,还具备...

    RMI-demo.zip_DEMO_rmi

    4. **导出远程对象**:使用`java.rmi.Naming`或`java.rmi.server.UnicastRemoteObject`类的`exportObject()`方法,将远程对象导出到网络,使其可以被远程访问。 5. **客户端查找并调用**:客户端通过RMI注册表查找...

    java 远程调用rmi实现的简单例子

    4. **导出(Exporting)**:将远程实现对象暴露为可远程访问的过程。这通常通过`java.rmi.Naming`类的静态方法`bind()`完成。 5. **导入(Importing)**:客户端通过RMI注册表查找并获得远程对象的引用。这可以通过...

    Java实现远程控制

    RMI是Java提供的核心API,它允许对象在不同的Java虚拟机(JVM)之间进行通信,从而实现远程控制。RMI包含两个主要部分:远程接口(Remote Interface)和远程对象(Remote Object)。远程接口定义了可以在远程服务器...

    java 简单RMI 会议功能实现

    Java RMI(Remote Method Invocation,远程方法调用)是一种在Java平台上实现分布式计算的技术,它允许对象在不同的网络节点上进行交互,仿佛它们都在同一台机器上运行。在这个"java简单RMI会议功能实现"的例子中,...

    JAVA RMI远程调用方法代码

    - 使用`UnicastRemoteObject`将远程对象导出到网络上,使其可以被远程访问。 - 注册远程对象,使用`LocateRegistry`创建一个RMI注册表,并将远程对象注册到注册表中,以便客户端可以通过名称查找。 2. **客户端**...

    rmi.rar_RMI java_basic rmi

    远程方法调用(RMI,Remote Method Invocation)是Java平台上的一个重要特性,它允许一个对象在不同的Java虚拟机(JVM)之间进行方法调用,实现了分布式计算。本压缩包"rmi.rar"包含了基本的RMI实现示例,帮助我们...

    java 远程方法调用(java rmi)

    Java 远程方法调用(Java RMI,Remote Method Invocation)是Java平台提供的一种用于构建分布式应用程序的技术。它允许一个对象在某个Java虚拟机(JVM)上执行的方法调用另一个在不同JVM上的对象的方法,仿佛它们是...

    RMI.rar_Java RMI_java.rmi_java.rmi.Remot_remote

    Java RMI的实现基于Java的序列化机制,这意味着远程方法的参数和返回值都必须是可序列化的。Java RMI还提供了“Stub”和“Skeleton”的概念,Stub作为远程对象在客户端的代理,而Skeleton则在服务器端处理远程方法...

    java rmi 远程方法调用 服务端

    Java RMI(Remote Method ...总结,Java RMI服务端的实现涉及到远程接口定义、远程对象实现、注册表操作以及必要的配置和安全设置。理解并掌握这些核心概念和步骤,可以帮助开发者构建高效、可靠的分布式应用程序。

    J2SE.RMI.IIOP.application.design.code.rar_code rmi_rmi iiop

    远程接口定义了可供远程访问的方法,远程对象实现了这些接口,并且可以被注册到RMI注册表中,使其他客户端能够找到并调用它们。RMIC编译器将远程接口转换为必要的Java存根和 skeletons,使得跨JVM的通信成为可能。 ...

    Rmi.rar_Java RMI_RMI java_java RMI 线程_rmi

    此类需要通过`java.rmi.server.UnicastRemoteObject`或其子类进行导出,以便在服务器上注册并使其实现可远程访问。 3. **注册表(Registry)**:RMI系统中的一个组件,类似于服务目录,用于存储远程对象的引用。...

    JAVA RMI入门教程

    定位远程对象的过程通常涉及RMI的命名服务,比如使用Java Naming and Directory Interface (JNDI)。客户端在编写时需要知道提供命名服务的主机和端口,通过JNDI服务查询并获取远程对象的引用。RMI命名服务允许注册和...

    java rmi java rmi

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

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

    2. 实现远程接口:远程对象实现类必须扩展远程对象 java.rmi.UnicastRemoteObject 类,并实现所定义的远程接口。 JNDI(Java Naming and Directory Interface)是 Java 平台上的一个目录服务,它提供了一个统一的...

    Java RMI远程方法调用

    3. **RMI Registry**:RMI注册表是一个服务,用于存储远程对象的引用,它使用JNDI(Java Naming and Directory Interface)服务提供命名和目录功能。客户端通过注册表查找并获取远程对象的引用。 4. ** stubs 和 ...

Global site tag (gtag.js) - Google Analytics