rmi和jndi基础 |
您所在的位置:网站首页 › ldap服务是什么 › rmi和jndi基础 |
rmi和jndi基础
文章目录
rmi和jndi基础前言一、RMI1.定义一个接口继承remote(必须抛出RemoteException异常)2.服务端创建接口实现类3.服务端4.客户端
二、JNDI操作rmi1、jndi客户端2、jndi服务端3、运行结果
前言
RMI:远程方法调用(Remote Method Invocation),它支持存储在不同地址空间的程序级对象之间彼此进行通信,实现远程对象之间的无缝远程调用。 JNDI:Java命名和目录接口Java Naming and Directory Interface,作用是为JAVA应用程序提供命名和目录访问服务的API 提示:以下是本篇文章正文内容,下面案例可供参考 一、RMI官方文档:https://docs.oracle.com/javase/tutorial/rmi/overview.html 下图描述了一个RMI分布式应用程序,该应用程序使用RMI注册表来获取对远程对象的引用。服务器调用注册表将名称与远程对象相关联(或绑定)。客户端在服务器注册表中按名称查找远程对象,然后调用该对象上的方法。该图还显示,RMI系统使用现有的web服务器在需要时从服务器到客户端和从客户端到服务器加载对象的类定义。 代码如下(示例): package com.star.rmiDemo; import java.rmi.Remote; import java.rmi.RemoteException; public interface testRmi extends Remote { public String World(String test) throws RemoteException; } 2.服务端创建接口实现类代码如下(示例): package com.star.rmiDemo; import java.rmi.RemoteException; import java.rmi.server.UnicastRemoteObject; public class testRmiImpl extends UnicastRemoteObject implements testRmi { protected testRmiImpl() throws RemoteException { super(); } @Override public String World(String test) throws RemoteException { String s = test.toUpperCase(); System.out.println(s); return s; } } 3.服务端 package com.star.rmiDemo; import java.rmi.AlreadyBoundException; import java.rmi.RemoteException; import java.rmi.registry.LocateRegistry; import java.rmi.registry.Registry; /** * 编号7089 */ public class rmiServer { public static void main(String[] args) throws RemoteException, AlreadyBoundException { System.out.println("远程方法创建等待调用ing......"); //创建远程对象 testRmiImpl testRmi = new testRmiImpl(); // //创建注册表 Registry registry = LocateRegistry.createRegistry(1099); // //将远程对象注册到注册表里面,并且取名为test registry.rebind("test",testRmi); } } 4.客户端 package com.star.rmiDemo1; import com.star.rmiDemo.SayHello; import com.star.rmiDemo.testRmi; import java.rmi.NotBoundException; import java.rmi.Remote; import java.rmi.RemoteException; import java.rmi.registry.LocateRegistry; import java.rmi.registry.Registry; /** * 编号7089 */ public class rmiClient { public static void main(String[] args) throws RemoteException, NotBoundException { //获取到注册中心的代理 Registry registry = LocateRegistry.getRegistry("localhost", 1099); // //利用注册中心的代理去查询远程注册表中名为test的对象 testRmi rmi = (testRmi)registry.lookup("test"); // //调用远程方法 rmi.World("hello world"); } } 二、JNDI操作rmi官方文档:https://docs.oracle.com/javase/tutorial/jndi/overview/index.html JNDI体系结构由一个API和一个服务提供者接口(SPI)组成。Java应用程序使用JNDI API来访问各种命名和目录服务。SPI允许透明地插入各种命名和目录服务,从而允许Java应用程序使用JNDI API访问它们的服务。如下图所示: 先运行RMI服务端,在运行jndi服务端,在运行jndi客户端 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |