精灵巫婆 发表于 2015-1-18 11:34:52

来看远程接口的实行

JAVA学习必须明确这是一项投资,对于大多数的人来说,学习JAVA是为了就业,还有就是刚走向工作位置的朋友想尽快赶上工作的节奏。
服务器必需包括一个扩大了UnicastRemoteObject的类,并完成远程接口。这个类也能够含有附加的办法,但客户只能利用远程接口中的办法。这是明显的,由于客户失掉的只是指向接口的一个句柄,而非完成它的谁人类。
必需为远程对象明白界说构建器,即便只筹办界说一个默许构建器,用它挪用基本类构建器。必需把它明白地编写出来,由于它必需“掷”出RemoteException背例。
上面列出远程接口PerfectTime的实行历程:

//:PerfectTime.java
//TheimplementationofthePerfectTime
//remoteobject
packagec15.ptime;
importjava.rmi.*;
importjava.rmi.server.*;
importjava.rmi.registry.*;
importjava.net.*;

publicclassPerfectTime
extendsUnicastRemoteObject
implementsPerfectTimeI{
//Implementationoftheinterface:
publiclonggetPerfectTime()
throwsRemoteException{
returnSystem.currentTimeMillis();
}
//Mustimplementconstructortothrow
//RemoteException:
publicPerfectTime()throwsRemoteException{
//super();//Calledautomatically
}
//RegistrationforRMIserving:
publicstaticvoidmain(String[]args){
System.setSecurityManager(
newRMISecurityManager());
try{
PerfectTimept=newPerfectTime();
Naming.bind(
"//colossus:2005/PerfectTime",pt);
System.out.println("Readytodotime");
}catch(Exceptione){
e.printStackTrace();
}
}
}///:~
在这里,main()把持着设置服务器的全体细节。保留RMI对象时,必需在程序的某个中央接纳下述操纵:
(1)创立和安装一个平安办理器,令其撑持RMI。作为Java刊行包的一部分,合用于RMI独一一个是RMISecurityManager。
(2)创立远程对象的一个或多个实例。在这里,人人可看到创立的是PerfectTime对象。
(3)向RMI远程对象注册表注册最少一个远程对象。一个远程对象具有的办法可天生指向其他远程对象的句柄。如许一来,客户只需到注册内外会见一次,失掉第一个远程对象便可。

1.设置注册表
在这儿,人人可看到对静态办法Naming.bind()的一个挪用。但是,这个挪用请求注册表作为盘算机上的一个自力历程运转。注册表服务器的名字是rmiregistry。在32位Windows情况中,可以使用:
startrmiregistry
令其在背景运转。在Unix中,利用:
rmiregistry&
和很多收集程序一样,rmiregistry位于呆板启动它地点的某个IP地点处,但它也必需监督一个端口。假如象下面那样挪用rmiregistry,不利用参数,注册表的端口就会默许为1099。若但愿它位于其他某个端口,只需在命令行增加一个参数,指定谁人端口编号便可。对这个例子来讲,端口将位于2005,以是rmiregistry应当象上面如许启动(关于32位Windows):
startrmiregistry2005
关于Unix,则利用下述命令:
rmiregistry2005&
与端口有关的信息必需传送给bind()命令,同时传送的另有注册表地点的那台呆板的IP地点。但倘使我们想在当地测试RMI程序,就象本章的收集程序一向测试的那样,如许做就会带来成绩。在JDK1.1.1版本中,存在着下述两方面的成绩(正文⑦):
(1)localhost不克不及随RMI事情。以是为了在独自一台呆板上完成对RMI的测试,必需供应呆板的名字。为了在32位Windows情况中查询拜访本人呆板的名字,可进进把持面板,选择“收集”,选择“标识”卡片,个中列出了盘算机的名字。就我本人的情形来讲,我的呆板叫作“Colossus”(由于我用几个年夜容量的硬盘保留各类分歧的开辟体系——Clossus是“伟人”的意义)。仿佛年夜写情势会被疏忽。
(2)除非盘算机有一个举动的TCP/IP毗连,不然RMI不克不及事情,即便一切组件都只必要在当地呆板里相互通讯。这意味着在试图运转程序之前,必需毗连到本人的ISP(因特网服务供应者),不然会失掉一些寄义含混的背例动静。

⑦:为找出这些信息,我不知毁伤了几个脑细胞。

思索到这些要素,bind()命令酿成了上面这个模样:
Naming.bind("//colossus:2005/PerfectTime",pt);
若利用默许端口1099,就没有需要指定一个端口,以是可使用:
Naming.bind("//colossus/PerfectTime",pt);
在JDK将来的版本中(1.1以后),一旦更正了localhost的成绩,就可以一般地举行当地测试,往失落IP地点,只利用标识符:
Naming.bind("PerfectTime",pt);
服务名是恣意的;它在这里恰好为PerfectTime,和类名一样,但你能够依据情形恣意修正。最主要的是确保它在注册内外是个举世无双的名字,以便客户一般地猎取远程对象。若这个名字已在注册内外了,就会失掉一个AlreadyBoundException背例。为避免这个成绩,可思索保持利用rebind(),保持bind()。这是因为rebind()要末会增加一个新条目,要末将同名的条目交换失落。
只管main()加入,我们的对象已创立并注册,以是会由注册表一向坚持举动形态,期待客户抵达并收回对它的哀求。只需rmiregistry处于运转形态,并且我们没无为名字挪用Naming.unbind()办法,对象就一定位于谁人中央。思索到这个缘故原由,在我们计划本人的代码时,必要先封闭rmiregistry,并在编译远程对象的一个新版本时从头启动它。
其实不必定要将rmiregistry作为一个内部历程启动。若事前晓得本人的是请求用以注册表的独一一个使用,便可在程序外部启动它,利用下述代码:
LocateRegistry.createRegistry(2005);
和后面一样,2005代表我们在这个例子里选用的端标语。这等价于在命令行实行rmiregistry2005。但在计划RMI代码时,这类做法常常显得加倍便利,由于它作废了启动和中断注册表所需的分外步骤。一旦实行完这个代码,便可象之前一样利用Naming举行“绑定”——bind()。
在性能方面,在windows平台下,.net网页编程可能是占强项,要是把.net网页编程放在sun开发的操作系统上去运行呢?根本就运行不了,.net网页编程对其它操作系统的支持也很弱,性能也可能比不上java。

谁可相欹 发表于 2015-1-24 15:07:12

是一种使网页(Web Page)产生生动活泼画面的语言

莫相离 发表于 2015-2-1 17:10:46

Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。

仓酷云 发表于 2015-2-3 06:05:26

一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。

愤怒的大鸟 发表于 2015-2-6 10:23:18

是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言

再见西城 发表于 2015-2-9 22:40:23

Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)

只想知道 发表于 2015-2-16 07:17:16

你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。

冷月葬花魂 发表于 2015-3-5 01:17:19

关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。

若相依 发表于 2015-3-11 22:04:24

应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展

再现理想 发表于 2015-3-15 14:54:19

Java是一种计算机编程语言,拥有跨平台、面向对java

山那边是海 发表于 2015-3-19 08:49:12

你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。

简单生活 发表于 2015-3-24 19:45:20

是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言

分手快乐 发表于 2015-4-20 15:36:40

你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。

小妖女 发表于 2015-4-22 05:24:58

是一种将安全性(Security)列为第一优先考虑的语言

飘灵儿 发表于 2015-4-26 21:11:56

其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。

爱飞 发表于 2015-5-10 00:12:43

那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!

小魔女 发表于 2015-5-10 23:42:31

在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。

因胸联盟 发表于 2015-5-12 08:23:38

还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。

admin 发表于 2015-6-10 01:15:08

Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
页: [1]
查看完整版本: 来看远程接口的实行