- 浏览: 286404 次
文章分类
- 全部博客 (148)
- Shell (2)
- Python (4)
- Java (31)
- Javascript (4)
- Android (7)
- SQL优化 (0)
- Linux (5)
- webOS (4)
- MySQL (18)
- memcach redis (1)
- memcach (0)
- redis (3)
- memcache (2)
- svn (1)
- UED (1)
- 网络 (1)
- virtual box (1)
- git (1)
- Gitosis (1)
- 云计算 (2)
- 12306 (1)
- google (1)
- spdy (1)
- nginx (1)
- tomcat (2)
- SSL (2)
- lucene (2)
- 空间搜索 (1)
- lzo (1)
- 数据压缩 (1)
- ios (1)
- maven (1)
- elasticsearch (1)
- scribe (1)
- flume (1)
- jni (1)
- jna (1)
- hadoop (2)
- 大数据 (1)
最新评论
-
aa80303857:
不错,学习了。互相关注一下。
Sitemesh学习笔记 -
xiaozang:
...
关于nginx的rewrite重写规则 -
coderuncle:
楼主有没有研究过cloudera flume和apache f ...
scribe,flume -
奔跑的犀牛:
...
linux下自动启动mysql -
lsn_1212:
网上装svn的资源太多了,这个挺好的,说的挺全的。
SVN Server安装部署攻略(Linux+SubVersion+Apache)
RMI是一种分布式技术,使用RMI可以让一个虚拟机上的应用程序请求调用位于网络上另一处JVM上的对象方法。这是的以分布式方式部署应用成为了可能。
RMI的两个核心所在分别为Skeleton和Stub:
- Skeleton只在位于服务器端的程序,负责接受客户端发来的请求数据,并交由服务器端业务处理程序处理,最后将处理结果返回给客户端。
- Stub则负责在客户端向服务器端发送相关数据。
开发RMI应用程序需要以下几步:
- 定义远程接口:继承自java.rmi.Remote定义应用接口:IAppInterface
- 实现服务端对象:需继承自java.rmi.UnicastRemoteObject,同时要实现已定义的接口IAppINterface中的方法
- 启动RMI注册服务
- 执行start rmiregistry启动RMI注册服务
- 启动服务端程序,注册到RMI注册表中
- 开发并执行客户端程序
在程序中执行java.rmi.registry.LocateRegistry的createRegistry(int port)方法完成RMI注册服务的启动。
java.rmi.registry.Registry接口提供了几个方法来实现对RMI注册表的访问(类似于操作JNDI命名空间的javax.naming.Context接口)
- void bind(String name, java.rmi.Remote obj):将obj对象绑定在RMI注册表中,键值为name
- void rebind(String name, java.rmi.Remote obj):重写键值为name的RMI注册表绑定关系,把obj绑定在RMI注册表中,键值为name
- java.rmi.Remote lookup(String name):在RMI注册表中根据键值name查找对象并返回
- void unbind(String name):解除键值为name的对象的RMI绑定关系
示例:
1、定义远程接口
package org.eone.test.rmi; import java.rmi.Remote; import java.rmi.RemoteException; public interface IWeather extends Remote{ public String getWeather(String city) throws RemoteException; }
2、实现远程服务
package org.eone.test.rmi; import java.rmi.RemoteException; import java.rmi.server.UnicastRemoteObject; import java.rmi.registry.Registry; import java.rmi.registry.LocateRegistry; public class WeatherImpl extends UnicastRemoteObject implements IWeather{ public WeatherImpl() throws RemoteException{ } public String getWeather(String city){ return city + " : is Sunny..."; } public static void main(String[] args){ try{ Registry registry = LocateRegistry.createRegistry(1099); registry.bind("/weather", new WeatherImpl()); System.out.println("服务对象已绑定至注册表..."); }catch(Exception e){ System.out.println("绑定服务对象到注册表失败..."); } } }
3、开发并运行客户端程序
package org.eone.test.rmi; import java.rmi.registry.Registry; import java.rmi.registry.LocateRegistry; public class WeatherClient{ public static void main(String[] args){ try{ Registry registry = LocateRegistry.getRegistry("127.0.0.1", 1099); IWeather stub = (IWeather)registry.lookup("/weather"); String result = stub.getWeather("SHANGHAI"); System.out.println(result); }catch(Exception e){ e.printStackTrace(); } } }
发表评论
-
Spring发送邮件。
2013-06-04 15:15 1144Spring邮件抽象层的主要包为org.springfram ... -
JNA—JNI终结者
2013-03-04 14:08 1383JNA— http://blog.csdn.n ... -
Java 压缩实现
2013-01-29 10:51 968Java压缩技术(一) ZLib Java压缩技术(二) ZI ... -
深入理解JVM内幕:从基本结构到Java 7新特性
2013-01-26 22:57 846原文链接 http://www.importnew.com/ ... -
使用logback轻松管理日志
2013-01-22 14:12 2237最近才开始在项目中使用logback,有一种相见恨晚的感觉, ... -
SSL双向认证java实现
2013-01-09 13:58 1146本文通过模拟场景,介绍SSL双向认证的java实现 默认的情 ... -
TOMCAT-SSL双向认证-配置实例
2013-01-09 13:54 1064SSL (Secure Socket Layer - 安全套接 ... -
Java入门-BitSet的使用
2012-12-06 11:01 9440在使用PAT-Tree的中文实现中需要用到大量的位运算, ... -
由12306.cn谈谈网站性能技术
2012-10-17 16:35 92012306.cn网站挂了,被 ... -
Server redirected too many times
2012-09-17 16:54 6006我之前遇到过这种问题,有些网站是这样的,他判断cooki ... -
java并发编程
2012-08-15 19:45 0Queue BlockingQueue Con ... -
在junit中使用open session in view
2012-08-07 11:22 2059废话不多说直接上代码: jpa的 import ... -
mvn指定项目名称
2012-06-07 17:10 943call mvn eclipse:clean eclipse: ... -
在JVM关闭前想做的操作Rumtime
2011-12-01 11:07 1068在虚拟机被关闭前想做一些收尾工作,可以使用 Runtim ... -
Apache和Subversion集成安装与配置
2011-08-12 17:30 1139要准备的东西如下:1,apac ... -
Nginx+tomcat 做负载均衡
2011-08-12 17:27 1353一、 1、将tomcat 的serv ... -
SVN Server安装部署攻略(Linux+SubVersion+Apache)
2011-07-18 18:45 2692一. 安装apr依赖库(Apache Po ... -
git
2011-05-26 11:38 11991. git init 2. cd - 快速返回 3 ... -
java工具集合
2011-05-23 17:29 858code review gerrit g ... -
常用的comet框架
2011-05-20 11:46 1300Atmosphere pushlet DWR comet ...
相关推荐
的各种简单示例,快速入门使用 Spring Boot 各种组件 示例项目 基础部分: :Spring Boot 快速入门 Hello world 示例 :Spring Boot 自定义 Banner (启动图案) :Spring Boot 主题切换 :Spring Boot 简单的服务...
2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体CD-ROM 8. 源代码 9. 编码样式 10. Java版本 11. 课程和培训 12. 错误 13. 封面设计 14. 致谢 第1章 对象入门 1.1 抽象的进步 1.2 对象的接口 1.3 ...
压缩文件内含有java原始的rmi原理分析及入门示例代码。
2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体CD-ROM 8. 源代码 9. 编码样式 10. Java版本 11. 课程和培训 12. 错误 13. 封面设计 14. 致谢 第1章 对象入门 1.1 抽象的进步 1.2 对象的接口 1.3 ...
2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体CD-ROM 8. 源代码 9. 编码样式 10. Java版本 11. 课程和培训 12. 错误 13. 封面设计 14. 致谢 第1章 对象入门 1.1 抽象的进步 1.2 对象的接口 1.3 ...
这是一个Hessian入门学习的实例,程序包是一个web工程,使用intellij idea + Maven开发,其中通过两个方式展示了使用Hessian实现RMI的原理,一个是访问jsp页面,一个是在代码中手工创建client。对于Hessian Servlet...
JAVA_Thinking in Java(中文版 由yyc,spirit整理).chm ------------------------------------------------- 本教程由yyc,spirit整理 ------------------------------------------------- “Thinking in Java...
2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体CD-ROM 8. 源代码 9. 编码样式 10. Java版本 11. 课程和培训 12. 错误 13. 封面设计 14. 致谢 第1章 对象入门 1.1 抽象的进步 1.2 对象的接口 1.3 ...
3.1.2 Java事件模型示例 119 3.1.3 JSF事件模型 120 3.1.4 Action事件 122 3.1.5 值改变事件 125 3.1.6 生命周期事件 128 3.1.7 将监听器绑定到Bean属性 130 3.2 JSF的国际化支持 132 3.2.1 加载国际化资源文件 132 ...
2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体CD-ROM 8. 源代码 9. 编码样式 10. Java版本 11. 课程和培训 12. 错误 13. 封面设计 14. 致谢 第1章 对象入门 1.1 抽象的进步 1.2 对象的接口 1.3 ...
15.8.5 RMI的替选方案 15.9 总结 15.10 练习 第16章 设计范式 16.1 范式的概念 16.1.1 单子 16.1.2 范式分类 16.2 观察器范式 16.3 模拟垃圾回收站 16.4 改进设计 16.4.1 “制作更多的对象” 16.4.2 用于原型创建的...
“Thinking in Java”详细目录 写在前面的话 引言 1. 前提 2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体CD-ROM 8. 源代码 9. 编码样式 10. Java版本 11. 课程和培训 12. 错误 13. 封面设计 ...
2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体CD-ROM 8. 源代码 9. 编码样式 10. Java版本 11. 课程和培训 12. 错误 13. 封面设计 14. 致谢 第1章 对象入门 1.1 抽象的进步 1.2 ...
除此以外,所有示例都是完整的Java示例,能使大家很快地熟悉Java的外观。 <br>(4) 第4章:初始化和清除 本章开始介绍构建器,它的作用是担保初始化的正确实现。对构建器的定义要涉及函数过载的概念(因为可能...
它是用JavaFX制作的,还使用了Hibernate和RMI。 还有现代UI和UX概念以及 。用户界面-行为入门克隆存储库。 git clone https://github.com/Shehanka/RentLio.git 安装 OpenJDK 11.0 或更高版本。 安装MySQL。 运行...
第一章 J2EE快速入门 1.1 J2EE概述 1.1.1 J2EE的来源 1.1.2 J2EE整体框架 1.1.3 从J2EE到JavaEE 1.2 J2EE组件 1.2.1 客户端组件 1.2.2 Web组件 1.2.3 业务逻辑组件 1.3 J2EE容器 1.3.1 容器服务 1.3.2 容器类型 1.4 ...
第一章 J2EE快速入门 1.1 J2EE概述 1.1.1 J2EE的来源 1.1.2 J2EE整体框架 1.1.3 从J2EE到JavaEE 1.2 J2EE组件 1.2.1 客户端组件 1.2.2 Web组件 1.2.3 业务逻辑组件 1.3 J2EE容器 1.3.1 容器服务 1.3.2 容器类型 1.4 ...
第一章 J2EE快速入门 1.1 J2EE概述 1.1.1 J2EE的来源 1.1.2 J2EE整体框架 1.1.3 从J2EE到JavaEE 1.2 J2EE组件 1.2.1 客户端组件 1.2.2 Web组件 1.2.3 业务逻辑组件 1.3 J2EE容器 1.3.1 容器服务 1.3.2 容器类型 1.4 ...
第一章 J2EE快速入门 1.1 J2EE概述 1.1.1 J2EE的来源 1.1.2 J2EE整体框架 1.1.3 从J2EE到JavaEE 1.2 J2EE组件 1.2.1 客户端组件 1.2.2 Web组件 1.2.3 业务逻辑组件 1.3 J2EE容器 1.3.1 容器服务 1.3.2 容器类型 1.4 ...
2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体CD-ROM 8. 源代码 9. 编码样式 10. Java版本 11. 课程和培训 12. 错误 13. 封面设计 14. 致谢 第1章 对象入门 1.1 抽象的进步 1.2 对象的接口 1.3 ...