- 浏览: 90908 次
文章分类
最新评论
Java RMI 指的是远程方法调用 (Remote Method Invocation)。它是一种机制,能够让在某个 Java 虚拟机上的对象调用另一个 Java 虚拟机中的对象上的方法。可以用此方法调用的任何对象必须实现该远程接口。
在Web Service、SOA的时代,是不是每个应用都应该选用笨拙的Web Service组件来实现,通过对比测试后,RMI是最简单的,在一些小的应用中是最合适的。
在Web Service、SOA的时代,是不是每个应用都应该选用笨拙的Web Service组件来实现,通过对比测试后,RMI是最简单的,在一些小的应用中是最合适的。
package org.nick.rmi; import java.rmi.Remote; import java.rmi.RemoteException; /** * 定义一个远程接口,必须继承Remote接口,其中需要远程调用的方法必须抛出RemoteException异常 */ public interface IHello extends Remote { /** * 简单的返回“Hello World!"字样 * @return 返回“Hello World!"字样 * @throws java.rmi.RemoteException */ public String helloWorld() throws RemoteException; /** * 一个简单的业务方法,根据传入的人名返回相应的问候语 * @param someBodyName 人名 * @return 返回相应的问候语 * @throws java.rmi.RemoteException */ public String sayHelloToSomeBody(String someBodyName) throws RemoteException; }
package org.nick.rmi; import java.rmi.RemoteException; import java.rmi.server.UnicastRemoteObject; /** * 远程的接口的实现 */ public class HelloImpl extends UnicastRemoteObject implements IHello { /** * 因为UnicastRemoteObject的构造方法抛出了RemoteException异常,因此这里默认的构造方法必须写,必须声明抛出RemoteException异常 * * @throws RemoteException */ public HelloImpl() throws RemoteException { } /** * 简单的返回“Hello World!"字样 * * @return 返回“Hello World!"字样 * @throws java.rmi.RemoteException */ public String helloWorld() throws RemoteException { return "Hello World!"; } /** * 一个简单的业务方法,根据传入的人名返回相应的问候语 * * @param someBodyName 人名 * @return 返回相应的问候语 * @throws java.rmi.RemoteException */ public String sayHelloToSomeBody(String someBodyName) throws RemoteException { return "你好," + someBodyName + "!"; } }
package org.nick.rmi; import java.net.MalformedURLException; import java.rmi.AlreadyBoundException; import java.rmi.Naming; import java.rmi.RemoteException; import java.rmi.registry.LocateRegistry; /** * 创建RMI注册表,启动RMI服务,并将远程对象注册到RMI注册表中。 */ public class HelloServer { public static void main(String args[]) { try { //创建一个远程对象 IHello rhello = new HelloImpl(); //本地主机上的远程对象注册表Registry的实例,并指定端口为8888,这一步必不可少(Java默认端口是1099),必不可缺的一步,缺少注册表创建,则无法绑定对象到远程注册表上 LocateRegistry.createRegistry(8888); //把远程对象注册到RMI注册服务器上,并命名为RHello //绑定的URL标准格式为:rmi://host:port/name(其中协议名可以省略,下面两种写法都是正确的) Naming.bind("rmi://localhost:8888/RHello",rhello); // Naming.bind("//localhost:8888/RHello",rhello); System.out.println(">>>>>INFO:远程IHello对象绑定成功!"); } catch (RemoteException e) { System.out.println("创建远程对象发生异常!"); e.printStackTrace(); } catch (AlreadyBoundException e) { System.out.println("发生重复绑定对象异常!"); e.printStackTrace(); } catch (MalformedURLException e) { System.out.println("发生URL畸形异常!"); e.printStackTrace(); } } }
package org.nick.rmi; import java.net.MalformedURLException; import java.rmi.Naming; import java.rmi.NotBoundException; import java.rmi.RemoteException; /** * 客户端测试,在客户端调用远程对象上的远程方法,并返回结果。 */ public class HelloClient { public static void main(String args[]){ try { //在RMI服务注册表中查找名称为RHello的对象,并调用其上的方法 IHello rhello =(IHello) Naming.lookup("rmi://localhost:8888/RHello"); System.out.println(rhello.helloWorld()); System.out.println(rhello.sayHelloToSomeBody("anybody")); } catch (NotBoundException e) { e.printStackTrace(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (RemoteException e) { e.printStackTrace(); } } }
发表评论
-
41、解决HttpServletResponse输出的中文乱码问题
2015-04-12 21:48 1214response返回有两种,一种是字节流outputs ... -
41、轮询
2015-04-12 08:50 0浏览器关闭使session失效 ... -
40、spring ajax/easyui 中文乱码的解决
2015-04-04 14:52 692使用spingmvc,在JS里面通过ajax发送请求,并 ... -
39、.net
2015-03-28 23:12 542熟悉java编程,自然学习c#就会比较容易,有几个点需要说明下 ... -
38、servlet-- JSTL+EL(c标签、${})
2015-03-23 15:57 780参看:http://www.cnblogs.com/xdp-g ... -
37、servlet--jsp
2015-03-23 15:07 492不管是JSP还是Servlet,虽然都可以用于开发动 ... -
36、servlet--防止表单重复提交
2015-03-23 14:33 7091、在网络延迟会或服务器反应过慢的情况下让用户有时间点击多次s ... -
35、servlet--servletContext
2015-03-22 13:41 474servletContext接口是Servlet中最大的一个接 ... -
34、servlet--会话技术/购物车demo/y验证码
2015-03-21 23:40 586会话Session and Cookie 1、session: ... -
33、servlet--转发/web开发指导思想
2015-03-21 12:31 445转发: req.getRequestDispatcher(&q ... -
32、servlet --重定向/下载/缓存/中文乱码
2015-03-20 23:21 1052重定向1、sendRedirect rep.sendRedir ... -
31、servlet--开发方式
2015-03-20 21:55 633servlet:利用java技术开发动态网页的技术,是学习ja ... -
30、servlet---tomcat原理
2015-03-20 18:20 674Servlet出现得早,servlet很强大,但是se ... -
29、servlet--jsp执行过程
2015-03-20 15:08 445J2EE的13种核心技术:JDBC、JNDI、EJBs、 ... -
29、springmvc+spring+mybatis+oracle12的demo
2015-03-15 20:29 0每次搭建都要重头搭建,累~~ 注意:用12c的jdbc 在安 ... -
27、Tomcat多次加载项目问题
2015-03-12 15:30 559错误配置方式: <Host name="lo ... -
26、数据分页(jsp+servlet)
2015-03-12 15:19 471随着数据库中存储的数据的增多,满足用户查询条件的数据也 ... -
llll.文档设计
2015-03-11 13:31 0设计文档与代码实现到 ... -
24、webservice_短信接口
2015-03-11 10:48 798http://blog.csdn.net/sxdtzhaoxi ... -
23、svn
2015-03-11 10:48 422<参看>http://blog.csdn.net/ ...
相关推荐
1. **定义远程接口**:首先,你需要创建一个接口,并将其标记为`java.rmi.Remote`的子接口。这个接口定义了远程对象将要暴露的方法。 2. **实现远程接口**:然后,创建一个实现了该远程接口的类。这个类的实例将在...
"RMI-demo.zip_DEMO_rmi"是一个示例项目,用于教学目的,展示了RMI的基本用法。 该压缩包包含以下四个主要文件: 1. **FirstProblem.jar**:这是一个包含服务器端和客户端所需类的Java可执行jar文件。RMI应用通常...
在这个“RMI.rar_DEMO_rmi”压缩包中,包含了一个RMI的示例项目,对于初学者或者想要深入理解中间件技术的人来说是一个很好的学习资源。 首先,我们来了解RMI的基本概念。RMI的核心思想是,一个Java对象可以在本地...
Dubbo_ demo通常包含一系列示例代码,用于演示如何在项目中集成和使用Dubbo,帮助开发者快速理解和实践。 在分布式系统中,RPC机制扮演着至关重要的角色。RPC允许一个进程(客户端)调用另一个进程(服务端)的方法...
Java RMI(Remote Method Invocation,远程方法调用)是Java平台提供的一种分布式计算技术,它允许在不同网络节点上的Java对象之间进行透明的交互。在Java RMI中,一个对象可以调用另一个位于不同JVM(Java虚拟机)...
在这个“ehcache rmi集群demo”中,我们将探讨如何将Ehcache与RMI结合,实现一个跨节点的缓存集群。 首先,Ehcache的核心概念包括缓存管理器(Cache Manager)、缓存(Cache)、缓存项(Cache Entry)等。缓存管理...
【RMI+EHCACHE Demo】是一个面向初学者的示例项目,旨在帮助理解如何结合Remote Method Invocation(远程方法调用)和Ehcache缓存技术。这个Demo将展示如何利用RMI来创建分布式系统,并利用Ehcache进行高效的数据...
该demo分为MainService.java服务端和MainClient.java客户端,既可以都在本地运行, 也可以上传到Linux环境使用 java -cp RMITest-0.0.1-SNAPSHOT.jar com.xxz.mainclient.MainClient 命令运行
1. **定义远程接口**:创建一个继承自`java.rmi.Remote`的接口,定义要在远程对象上执行的方法。这些方法通常抛出`java.rmi.RemoteException`,这是RMI框架处理网络异常的方式。 2. **实现远程对象**:创建一个类...
1. **远程对象**:这是RMI的核心,它是一个实现了特定接口的Java对象,该接口定义了可供远程调用的方法。这些远程对象可以在网络中的不同JVM上运行。 2. **接口**:远程对象必须实现的接口,这个接口中的方法是远程...
1. **Dubbo简介** Dubbo是阿里巴巴开源的一款高性能、轻量级的Java RPC框架,它提供了服务注册、服务发现、负载均衡、流量控制等核心功能,广泛应用于微服务架构中。Dubbo的目标是让分布式服务开发变得简单、透明,...
**1. DWR的基本概念** DWR的核心是远程方法调用(Remote Method Invocation, RMI),但它是在Web环境中的实现。DWR允许JavaScript代码在用户浏览器中直接调用服务器端的Java方法,使得前端与后端的交互变得更加实时...
RemObjects 是由 RemObjects Software 公司开发的一套软件开发框架,它提供了一种简单而高效的方式来进行远程方法调用(RMI),支持多种编程语言,如 Delphi, C#, Swift, Java 等。通过 RemObjects,开发者可以在...
1. **RMI服务器(rmiserver)**: - **注册表(Registry)**:RMI系统的核心组件,用于存储远程对象的引用。服务器启动时,会将实现远程接口的实例注册到Registry中,赋予一个唯一的名称。 - **远程接口(Remote ...
java rmi入门级实例:分为三个javase项目,rmi-api(存放公共的接口和实体),rmi-server(rmi服务器端),rmi-client(rmi客户端),其中服务端和客户端都依赖rmi-api项目
1. **远程接口(Remote Interface)**:这是定义远程方法的接口,它继承了java.rmi.Remote接口。远程接口中的每个方法都可能抛出RemoteException,表示网络通信中可能出现的问题。 2. **远程实现(Remote ...
1. **服务提供者(Provider)**:提供服务的模块,它需要定义服务接口并实现该接口,然后通过Dubbo配置暴露服务。在Spring配置文件中,会声明服务接口、实现类,并使用`dubbo:service`标签来暴露服务。 2. **服务...
本测试Demo旨在展示如何在.NET环境中利用TCP实现RMI。 RMI的核心概念包括服务器端(Server)、客户端(Client)以及代理对象(Stub)。在服务器端,我们需要定义服务接口和服务实现,这两个部分定义了可以被远程...
1. **README.md**:这是一个 Markdown 文件,通常包含项目简介、安装指南、使用步骤等重要信息,是理解和运行 "dubbo_demo" 的入口。 2. **zookeeper-3.4.6.rar**:ZooKeeper 是 Apache 的一个分布式协调服务,它在...
1. **服务提供者(Provider)**:是暴露服务的服务端,它实现了服务,通过Dubbo暴露服务供消费者调用。 2. **服务消费者(Consumer)**:是调用远程服务的客户端,它通过Dubbo消费服务提供者提供的服务。 3. **服务...