电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

Java RMI機(jī)制講解

瀏覽:119日期:2022-08-09 10:22:36
Java RMI

Java RMI之HelloWorld篇

Java RMI 指的是遠(yuǎn)程方法調(diào)用 (Remote Method Invocation)。它是一種機(jī)制,能夠讓在某個(gè) Java 虛擬機(jī)上的對象調(diào)用另一個(gè) Java 虛擬機(jī)中的對象上的方法。可以用此方法調(diào)用的任何對象必須實(shí)現(xiàn)該遠(yuǎn)程接口。

Java RMI不是什么新技術(shù)(在Java1.1的時(shí)代都有了),但卻是是非常重要的底層技術(shù)。 大名鼎鼎的EJB都是建立在rmi基礎(chǔ)之上的,現(xiàn)在還有一些開源的遠(yuǎn)程調(diào)用組件,其底層技術(shù)也是rmi。

在大力鼓吹Web Service、SOA的時(shí)代,是不是每個(gè)應(yīng)用都應(yīng)該選用笨拙的Web Service組件來實(shí)現(xiàn),通過對比測試后,RMI是最簡單的,在一些小的應(yīng)用中是最合適的。

下面通過一個(gè)簡單的例子來說明RMI的原理和應(yīng)用,下面這個(gè)例子是一個(gè)簡單HelloWorld,但已涵蓋RMI的核心應(yīng)用與開發(fā)模式。

/*** Created by IntelliJ IDEA.* User: leizhimin* Date: 2008-8-7 21:50:02* 定義一個(gè)遠(yuǎn)程接口,必須繼承Remote接口,其中需要遠(yuǎn)程調(diào)用的方法必須拋出RemoteException異常*/public interface IHello extends Remote { /** * 簡單的返回“Hello World!'字樣 * @return 返回“Hello World!'字樣 * @throws java.rmi.RemoteException */ public String helloWorld() throws RemoteException; /** * 一個(gè)簡單的業(yè)務(wù)方法,根據(jù)傳入的人名返回相應(yīng)的問候語 * @param someBodyName 人名 * @return 返回相應(yīng)的問候語 * @throws java.rmi.RemoteException */ public String sayHelloToSomeBody(String someBodyName) throws RemoteException;}

/*** Created by IntelliJ IDEA.* User: leizhimin* Date: 2008-8-7 21:56:47* 遠(yuǎn)程的接口的實(shí)現(xiàn)*/public class HelloImpl extends UnicastRemoteObject implements IHello { /** * 因?yàn)閁nicastRemoteObject的構(gòu)造方法拋出了RemoteException異常,因此這里默認(rèn)的構(gòu)造方法必須寫,必須聲明拋出RemoteException異常 * * @throws RemoteException */ public HelloImpl() throws RemoteException { } /** * 簡單的返回“Hello World!'字樣 * * @return 返回“Hello World!'字樣 * @throws java.rmi.RemoteException */ public String helloWorld() throws RemoteException {return 'Hello World!'; } /** * 一個(gè)簡單的業(yè)務(wù)方法,根據(jù)傳入的人名返回相應(yīng)的問候語 * * @param someBodyName 人名 * @return 返回相應(yīng)的問候語 * @throws java.rmi.RemoteException */ public String sayHelloToSomeBody(String someBodyName) throws RemoteException {return '你好,' + someBodyName + '!'; }}

/*** Created by IntelliJ IDEA.* User: leizhimin* Date: 2008-8-7 22:03:35* 創(chuàng)建RMI注冊表,啟動(dòng)RMI服務(wù),并將遠(yuǎn)程對象注冊到RMI注冊表中。*/public class HelloServer { public static void main(String args[]) {try { //創(chuàng)建一個(gè)遠(yuǎn)程對象 IHello rhello = new HelloImpl(); //本地主機(jī)上的遠(yuǎn)程對象注冊表Registry的實(shí)例,并指定端口為8888,這一步必不可少(Java默認(rèn)端口是1099),必不可缺的一步,缺少注冊表創(chuàng)建,則無法綁定對象到遠(yuǎn)程注冊表上 LocateRegistry.createRegistry(8888); //把遠(yuǎn)程對象注冊到RMI注冊服務(wù)器上,并命名為RHello //綁定的URL標(biāo)準(zhǔn)格式為:rmi://host:port/name(其中協(xié)議名可以省略,下面兩種寫法都是正確的) Naming.bind('rmi://localhost:8888/RHello',rhello);// Naming.bind('//localhost:8888/RHello',rhello); System.out.println('>>>>>INFO:遠(yuǎn)程IHello對象綁定成功!');} catch (RemoteException e) { System.out.println('創(chuàng)建遠(yuǎn)程對象發(fā)生異常!'); e.printStackTrace();} catch (AlreadyBoundException e) { System.out.println('發(fā)生重復(fù)綁定對象異常!'); e.printStackTrace();} catch (MalformedURLException e) { System.out.println('發(fā)生URL畸形異常!'); e.printStackTrace();} }}

/*** Created by IntelliJ IDEA.* User: leizhimin* Date: 2008-8-7 22:21:07* 客戶端測試,在客戶端調(diào)用遠(yuǎn)程對象上的遠(yuǎn)程方法,并返回結(jié)果。*/public class HelloClient { public static void main(String args[]){try { //在RMI服務(wù)注冊表中查找名稱為RHello的對象,并調(diào)用其上的方法 IHello rhello =(IHello) Naming.lookup('rmi://localhost:8888/RHello'); System.out.println(rhello.helloWorld()); System.out.println(rhello.sayHelloToSomeBody('熔巖'));} catch (NotBoundException e) { e.printStackTrace();} catch (MalformedURLException e) { e.printStackTrace();} catch (RemoteException e) { e.printStackTrace(); } }}總結(jié):

從上面的過程來看,RMI對服務(wù)器的IP地址和端口依賴很緊密,但是在開發(fā)的時(shí)候不知道將來的服務(wù)器IP和端口如何,但是客戶端程序依賴這個(gè)IP和端口。

這也是RMI的局限性之一。這個(gè)問題有兩種解決途徑:一是通過DNS來解決,二是通過封裝將IP暴露到程序代碼之外。

RMI的局限性之二是RMI是Java語言的遠(yuǎn)程調(diào)用,兩端的程序語言必須是Java實(shí)現(xiàn),對于不同語言間的通訊可以考慮用Web Service或者公用對象請求代理體系(CORBA)來實(shí)現(xiàn)。

到此這篇關(guān)于Java RMI機(jī)制講解的文章就介紹到這了,更多相關(guān)Java RMI內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 粤丰硕水性环氧地坪漆-防静电自流平厂家-环保地坪涂料代理 | 南汇8424西瓜_南汇玉菇甜瓜-南汇水蜜桃价格 | 小型气象站_车载气象站_便携气象站-山东风途物联网 | 合金ICP光谱仪(磁性材料,工业废水)-百科 | 滚筒烘干机_转筒烘干机_滚筒干燥机_转筒干燥机_回转烘干机_回转干燥机-设备生产厂家 | 防腐储罐_塑料储罐_PE储罐厂家_淄博富邦滚塑防腐设备科技有限公司 | 广州/东莞小字符喷码机-热转印打码机-喷码机厂家-广州瑞润科技 | 百方网-百方电气网,电工电气行业专业的B2B电子商务平台 | 迪威娱乐|迪威娱乐客服|18183620002 | 阻垢剂-反渗透缓蚀阻垢剂厂家-山东鲁东环保科技有限公司 | 无尘烘箱_洁净烤箱_真空无氧烤箱_半导体烤箱_电子防潮柜-深圳市怡和兴机电 | 执业药师报名时间,报考条件,考试时间-首页入口 | 粒米特测控技术(上海)有限公司-测功机_减速机测试台_电机测试台 | 开平机_纵剪机厂家_开平机生产厂家|诚信互赢-泰安瑞烨精工机械制造有限公司 | 玻璃钢型材-玻璃钢风管-玻璃钢管道,生产厂家-[江苏欧升玻璃钢制造有限公司] | 桥架-槽式电缆桥架-镀锌桥架-托盘式桥架 - 上海亮族电缆桥架制造有限公司 | 齿轮减速马达一体式_蜗轮蜗杆减速机配电机-德国BOSERL齿轮减速电动机生产厂家 | 印刷人才网 印刷、包装、造纸,中国80%的印刷企业人才招聘选印刷人才网! | 千淘酒店差旅平台-中国第一家针对TMC行业的酒店资源供应平台 | 煤矿人员精确定位系统_矿用无线通信系统_煤矿广播系统 | 球形钽粉_球形钨粉_纳米粉末_难熔金属粉末-广东银纳官网 | 双段式高压鼓风机-雕刻机用真空泵-绍兴天晨机械有限公司 | 桥架-槽式电缆桥架-镀锌桥架-托盘式桥架 - 上海亮族电缆桥架制造有限公司 | 电梯装饰-北京万达中意电梯装饰有限公司 | 注塑模具_塑料模具_塑胶模具_范仕达【官网】_东莞模具设计与制造加工厂家 | 百度网站优化,关键词排名,SEO优化-搜索引擎营销推广 | 哈希余氯测定仪,分光光度计,ph在线监测仪,浊度测定仪,试剂-上海京灿精密机械有限公司 | 免费个人pos机申请办理-移动pos机刷卡-聚合收款码办理 | 东莞市天进机械有限公司-钉箱机-粘箱机-糊箱机-打钉机认准东莞天进机械-厂家直供更放心! | 电动打包机_气动打包机_钢带捆扎机_废纸打包机_手动捆扎机 | 海德莱电力(HYDELEY)-无功补偿元器件生产厂家-二十年专业从事电力电容器 | 室内室外厚型|超薄型|非膨胀型钢结构防火涂料_隧道专用防火涂料厂家|电话|价格|批发|施工 | 铁艺,仿竹,竹节,护栏,围栏,篱笆,栅栏,栏杆,护栏网,网围栏,厂家 - 河北稳重金属丝网制品有限公司 山东太阳能路灯厂家-庭院灯生产厂家-济南晟启灯饰有限公司 | 精密光学实验平台-红外粉末压片机模具-天津博君 | 3A别墅漆/3A环保漆_广东美涂士建材股份有限公司【官网】 | 玻璃钢型材-玻璃钢风管-玻璃钢管道,生产厂家-[江苏欧升玻璃钢制造有限公司] | 论文查重_免费论文查重_知网学术不端论文查重检测系统入口_论文查重软件 | 东莞市踏板石餐饮管理有限公司_正宗桂林米粉_正宗桂林米粉加盟_桂林米粉加盟费-东莞市棒子桂林米粉 | 制氮设备-变压吸附制氮设备-制氧设备-杭州聚贤气体设备制造有限公司 | 江苏南京多语种翻译-专业翻译公司报价-正规商务翻译机构-南京华彦翻译服务有限公司 | 手术室净化厂家_成都实验室装修公司_无尘车间施工单位_洁净室工程建设团队-四川华锐16年行业经验 |