- 浏览: 202151 次
- 性别:
- 来自: 广州
最新评论
-
lxyoucan:
特地注册账号来感谢
在jsp上显示pdf||网页直接打开PDF 在IE中显示pdf文档的方法及参数设置 -
jinjiaoliu:
...
ant使用scp上传文件问题 -
AspirantHui:
非常感谢,你提供的方法解决了我的问题!
在jsp上显示pdf||网页直接打开PDF 在IE中显示pdf文档的方法及参数设置 -
cxh61207:
...
ant使用scp上传文件问题 -
daoyuanjiao:
如果用的是福昕PDF阅读器,该怎么弄呢?
在jsp上显示pdf||网页直接打开PDF 在IE中显示pdf文档的方法及参数设置
1. Name
RMI是Romote Method Invocation的缩写,就是远程方法调用。
2. Intent
具体的说,就是能够通过这种机制,实现在一个JVM上调用另一个JVM上的Java对象的方法。
3. Structure
(1)RMI Interface and Class
第一步:继承了Remote的interface
定义一个继承了Remote的interface,命名为TestRMIService。在其中有我们期望在Client端调用的方法testHello(),注意要抛出RemoteException。
第二步:继承了UnicastRemoteObject且实现了TestRMIService的class
定义一个继承了UnicastRemoteObject且实现了TestRMIService的class,命名为TestRMIServiceImpl。在其中实现testHello方法。
(2)RMI Server
第一步:
定义一个class,命名为TestServer,其中有main方法。在main方法中实例化TestRMIService一个远程对象,命名为testRMI。
第二步:
创建一个Registry,并向远程对象testRMI注册,注册名为“rmi://locahost:1234/testrmi”。
(3)RMI Client
第一步:
定义一个class,命名为TestClient,其中有main方法。查询注册
第二步:
查询注册名为“rmi://locahost:1234/testrmi”的TestRMIService远程对象,查询结果为testRMI。
第三步:
调用远程对象testRMI的方法testHello。
4. Sample Code
(1)TestRMIService
(2)TestRMIServiceImpl
(3)TestServer
(4)TestClient
5. Test
(1)运行TestServer
在Eclipse主界面的Package Explorer中你所创建的测试RMI的工程中的com.sinosuperman包中,右击TestServer,选择Run As,选择Java Application。
这时界面上会显示:
“注册远程对象成功”
(2)运行TestClient
在Eclipse主界面的Package Explorer中你所创建的测试RMI的工程中的com.sinosuperman.rmi包中,右击TestClient,选择Run As,选择Java Application。
这时界面上会显示:
“I'm RMI, Hello World!”
RMI是Romote Method Invocation的缩写,就是远程方法调用。
2. Intent
具体的说,就是能够通过这种机制,实现在一个JVM上调用另一个JVM上的Java对象的方法。
3. Structure
(1)RMI Interface and Class
第一步:继承了Remote的interface
定义一个继承了Remote的interface,命名为TestRMIService。在其中有我们期望在Client端调用的方法testHello(),注意要抛出RemoteException。
第二步:继承了UnicastRemoteObject且实现了TestRMIService的class
定义一个继承了UnicastRemoteObject且实现了TestRMIService的class,命名为TestRMIServiceImpl。在其中实现testHello方法。
(2)RMI Server
第一步:
定义一个class,命名为TestServer,其中有main方法。在main方法中实例化TestRMIService一个远程对象,命名为testRMI。
第二步:
创建一个Registry,并向远程对象testRMI注册,注册名为“rmi://locahost:1234/testrmi”。
(3)RMI Client
第一步:
定义一个class,命名为TestClient,其中有main方法。查询注册
第二步:
查询注册名为“rmi://locahost:1234/testrmi”的TestRMIService远程对象,查询结果为testRMI。
第三步:
调用远程对象testRMI的方法testHello。
4. Sample Code
(1)TestRMIService
package com.sinosuperman.rmi; import java.rmi.Remote; import java.rmi.RemoteException; public interface TestRMIService extends Remote { public String testHello() throws RemoteException; }
(2)TestRMIServiceImpl
package com.sinosuperman.rmi; import java.rmi.RemoteException; import java.rmi.server.UnicastRemoteObject; public class TestRMIServiceImpl extends UnicastRemoteObject implements TestRMIService { private static final long serialVersionUID = -9039976499370682232L; public TestRMIServiceImpl() throws RemoteException { } @Override public String testHello() throws RemoteException { return "I'm RMI, Hello World!"; } }
(3)TestServer
package com.sinosuperman.server; import java.net.MalformedURLException; import java.rmi.AlreadyBoundException; import java.rmi.Naming; import java.rmi.RemoteException; import java.rmi.registry.LocateRegistry; import com.sinosuperman.rmi.TestRMIService; import com.sinosuperman.rmi.TestRMIServiceImpl; public class TestServer { public static void main(String[] args) { try { /* Create a Remote object. */ TestRMIService testRMI = new TestRMIServiceImpl(); /* Create a registry object with 1234 port. */ LocateRegistry.createRegistry(1234); /* Register the Remote object to RMI registry server, and name it as testrmi. */ Naming.bind("rmi://localhost:1234/testrmi", testRMI); System.out.println("注册远程对象成功"); } catch (RemoteException e) { System.out.println("远程对象创建异常"); e.printStackTrace(); } catch (MalformedURLException e) { System.out.println("URL畸形异常"); e.printStackTrace(); } catch (AlreadyBoundException e) { System.out.println("重复绑定异常"); e.printStackTrace(); } } }
(4)TestClient
package com.sinosuperman.rmi; import java.net.MalformedURLException; import java.rmi.Naming; import java.rmi.NotBoundException; import java.rmi.RemoteException; public class TestRMIClient { public static void main(String[] args) { try { TestRMIService testService = (TestRMIService) Naming.lookup("rmi://localhost:1234/testrmi"); System.out.println(testService.testHello()); } catch (MalformedURLException e) { e.printStackTrace(); } catch (RemoteException e) { e.printStackTrace(); } catch (NotBoundException e) { e.printStackTrace(); } } }
5. Test
(1)运行TestServer
在Eclipse主界面的Package Explorer中你所创建的测试RMI的工程中的com.sinosuperman包中,右击TestServer,选择Run As,选择Java Application。
这时界面上会显示:
“注册远程对象成功”
(2)运行TestClient
在Eclipse主界面的Package Explorer中你所创建的测试RMI的工程中的com.sinosuperman.rmi包中,右击TestClient,选择Run As,选择Java Application。
这时界面上会显示:
“I'm RMI, Hello World!”
发表评论
-
Java常用的通信协议效率比较(转)
2013-01-23 14:38 1591本文比较了RMI,Hessian, ... -
JQuery工具插件qTip
2011-12-14 17:38 1265好吧,原谅我偷懒:http://messense.me/jqu ... -
JAVA解压缩文件——包含嵌套的压缩文件
2011-09-15 09:19 3106今天主要介绍JAVA处理ZIP文件,JAVA提供了相应的类、方 ... -
JAVA:附加码生成器(图片)
2011-08-29 11:30 1487〔Picture.java〕 package creato ... -
面试题--求质数
2011-04-29 13:04 1228求100以内的质数(指在一个大于1的自然数中,除了1和此整数自 ... -
Workspace in use or cannot be created, choose a different one.--错误解决办法
2010-11-25 13:16 1641eclipse 使用一段时间后,有时会因为一些故障自己就莫名 ... -
Java定时任务Timer
2010-11-19 11:12 1408Java定时任务,用到的地方可能比较多,例如:定时对数据库的某 ... -
AOP监听的简单例子
2010-11-11 16:13 1417Spring AOP是面向切面的方式,大部分项目使用它都是在事 ... -
Tomcat 启动时加载方法
2010-11-11 15:54 1584最近遇见一个需求,需要在项目中加入一个Mina通讯的客户端,而 ... -
AOP几个重要的概念
2010-11-09 16:45 1797《Spring参考手册》中定义了以下几个AOP的重要概念: ... -
结果集转换成json字符串
2010-08-25 11:20 3178在项目中做查询时一般使用:sql或者hql,今天分别介绍一下怎 ... -
java还原科学计数法的数值
2010-08-06 15:26 2042java.text.DecimalFormat nf = ne ... -
java.lang.IllegalArgumentException: No bean specified
2010-08-04 17:04 3003java.lang.IllegalArgumentExcept ... -
argument type mismatch问题解决
2010-07-01 09:31 6570type Exception report messag ... -
实现sybase数据库字段自增
2010-04-23 13:44 1118例如:在sybase中有一张用户表t_ug_user,其中包含 ... -
Hibernate框架ORM的原理
2010-04-21 14:48 1220hibernate,通过对jdbc进行封装,对 java类和 ... -
net.sourceforge.jtds.jdbc.ClobImpl 问题
2010-02-08 14:45 2912小弟最近在做数据查询时,遇到一个这样的问题: 数据列 ... -
父子页面之间值传递问题
2009-12-31 17:26 1575第一:页面中包含iframe ... -
Oracle函数和mysql函数比较
2009-12-31 17:23 21771. Oracle中的to_number()转换成 ... -
fusioncharts生成图表flash遮挡页面中元素的情况
2009-12-31 15:57 2222在做web开发中遇到fusionc ...
相关推荐
### JAVA设计模式在JDK中的应用 #### 一、引言 在软件开发过程中,设计模式作为一套被广泛接受的解决方案,能够帮助开发者解决常见的设计问题。Java作为一门流行的编程语言,其标准库(JDK)中巧妙地融入了多种设计...
总的来说,这个实验旨在让学生掌握Java中分布式编程的基本概念和技术,包括Socket编程和RMI,同时也会接触到Swing GUI的开发。通过实践,学生将能够理解如何在分布式环境中设计和实现高效的客户端-服务器通信,以及...
在本篇中,我们将深入探讨几个常见的设计模式,并通过具体的Java源码示例来阐述它们的应用。 1. 工厂模式(Factory Pattern):工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在Java中,`java....
1. "Readme.txt"通常包含关于压缩包的使用指南或者简要介绍,可能概述了RMI的基本原理、配置步骤,或者异步消息处理和回调机制的实践示例。 2. "www.pudn.com.txt"可能是从网站pudn.com下载的资源,可能包含了与RMI...
对于初学者来说,通过阅读和理解这些代码,可以学习到如何在Java中设计和实现基本的云计算功能,例如任务分发、结果收集、错误处理等。 总之,Java云计算简单示例是一个很好的学习资源,它可以帮助我们理解Java在...
本资源包含一本名为“JAVA分布式程序设计”的电子书以及相关的源码示例,旨在帮助开发者深入理解和实践Java在分布式环境中的应用。 《JAVA分布式程序设计》这本书可能涵盖了以下几个核心知识点: 1. **分布式系统...
设计模式之 Template(模板方法) 实际上向你介绍了为什么要使用 Java 抽象类,该模式原理简单,使用很普遍. 设计模式之 Strategy(策略) 不同算法各自封装,用户端可随意挑选需要的算法. 设计模式之 Chain of ...
通过研究这些章节的源码,读者可以逐步掌握Java网络编程的基本技巧,了解分布式计算的原理,并能够运用到实际项目中去解决复杂问题。这些示例代码不仅提供了理论知识的验证,也为实际工作中的问题解决提供了参考。
### RMI分布式应用实例解析 #### 一、RMI简介及分布式应用原理 RMI (Remote Method Invocation) 是 Java 提供的一种远程...通过遵循上述的设计模式和实现细节,我们可以有效地利用 RMI 构建高效、可靠的分布式系统。
在IT行业中,分布式应用程序是一种将任务分散到多个计算设备上以提高性能和可扩展性的软件设计模式。远程方法调用(Remote Method Invocation, RMI)是Java平台提供的一种技术,它使得运行在不同JVM(Java虚拟机)上...
【设计模式概述】 设计模式是软件工程中经过实践...学习JDK中的设计模式可以让我们更好地理解Java库的设计思想,提升编程技巧,同时也能帮助我们更有效地运用这些模式到自己的项目中,编写出高质量、易于维护的代码。
- RMI远程方法调用:RMI的工作原理、服务端与客户端的通信过程。 - EJB实体Bean:EJB的种类、实体Bean的生命周期管理。 6. **JMS消息传递**: - JMS消息模型:JMS消息类型、发布/订阅模式、点对点模式。 - JMS...
《EJB设计模式(中文版)》这本书详细阐述了以上各种模式,并提供了丰富的示例和最佳实践,旨在帮助开发者更有效地利用EJB技术构建高质量的企业应用。通过阅读此书,读者可以深入理解EJB的工作原理,提升其在J2EE环境...
6. **设计模式**:可能使用到如工厂模式(用于创建远程对象)、单例模式(管理RMI注册表的访问)等设计模式。 7. **版本控制**:项目名包含"AlumnosRMI-master",这可能是从Git仓库克隆下来的,因此还可能涉及到...
在学习过程中,重点应放在理解分布式系统的原理和设计模式上,同时,通过实践项目来提升实战技能。这本书提供的源码就是一个很好的实践平台,可以动手实践,调试代码,模拟分布式环境下的各种场景,从而更好地掌握...
本文旨在探讨一种基于Java语言的网格计算框架,并深入分析其设计原理与实现方法。 #### 二、网格计算概述 网格计算(Grid Computing)是一种通过互联网将地理上分布的资源(如计算机、存储设备、数据等)连接起来,...
- **java.rmi**:提供了与远程方法调用相关的所有类。 - **java.net**:提供了用于实现网络通信应用的所有类。 - **java.security.\***:提供了设计网络安全方案需要的一些类。 - **java.sql**:提供了访问和处理...
作为一本专为Java架构师打造的指导书籍,它涵盖了从基础到高级的多个方面,包括但不限于设计模式、并发编程、分布式系统、微服务、性能优化以及框架与工具的使用。 在Java开发中,设计模式是架构师必备的知识,如...