来看远程接口的实行
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。 是一种使网页(Web Page)产生生动活泼画面的语言 Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。 一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。 是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言 Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading) 你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。 关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。 应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展 Java是一种计算机编程语言,拥有跨平台、面向对java 你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。 是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言 你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。 是一种将安全性(Security)列为第一优先考虑的语言 其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。 那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧! 在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。 还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。 Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
页:
[1]