rmijava
编译 bian yi
(1)将接口文件打包成jar文件 1 jiang jie kou wen jian da bao cheng jar wen jian
microsoft windows: microsoft windows:
cd c:\home\waldo\src cd c:\home\waldo\src
javac compute\compute.java compute\task.java javac compute\compute.java compute\task.java
jar cvf compute.jar compute\*.class jar cvf compute.jar compute\*.class
solaris os or linux: solaris os or linux:
cd /home/waldo/src cd /home/waldo/src
javac compute/compute.java compute/task.java javac compute/compute.java compute/task.java
jar cvf compute.jar compute/*.class jar cvf compute.jar compute/*.class
(2)编译服务器端源文件 2 bian yi fu wu qi duan yuan wen jian
microsoft windows: microsoft windows:
cd c:\home\ann\src cd c:\home\ann\src
javac -cp c:\home\ann\public_html\classes\compute.jar javac -cp c:\home\ann\public_html\classes\compute.jar
engine\computeengine.java engine\computeengine.java
solaris os or linux: solaris os or linux:
cd /home/ann/src cd /home/ann/src
javac -cp /home/ann/public_html/classes/compute.jar javac -cp /home/ann/public_html/classes/compute.jar
engine/computeengine.java engine/computeengine.java
将红色文字换成你的compute.jar所在路径。 jiang hong se wen zi huan cheng ni de compute.jar suo zai lu jing
(3) 编译客户端源文件 (3) bian yi ke hu duan yuan wen jian
microsoft windows: microsoft windows:
cd c:\home\jones\src cd c:\home\jones\src
javac -cp c:\home\jones\public_html\classes\compute.jar javac -cp c:\home\jones\public_html\classes\compute.jar
client\computepi.java client\pi.java client\computepi.java client\pi.java
solaris os or linux: solaris os or linux:
cd /home/jones/src cd /home/jones/src
javac -cp /home/jones/public_html/classes/compute.jar javac -cp /home/jones/public_html/classes/compute.jar
client/computepi.java client/pi.java client/computepi.java client/pi.java
将红色文字换成你的compute.jar所在路径。 jiang hong se wen zi huan cheng ni de compute.jar suo zai lu jing
运行 yun hang
(1) 编写策略文件 1 bian xie ce lue wen jian
因为客户端程序和服务器端程序运行时都需要安全管理器,因此你要指定一个安全策略文件赋予它运行时的权限。因为我的客户端和服务器端程序都在一台机器上,所以它们的安全策略都写在了一个文件wideopen.policy里,在真实环境里,红色标识的策略和棕色标识的策略应该分别写在两个文件里。 yin wei ke hu duan cheng xu he fu wu qi duan cheng xu yun hang shi dou xu yao an quan guan li qi yin ci ni yao zhi ding yi ge an quan ce lue wen jian fu yu ta yun hang shi de quan xian yin wei wo de ke hu duan he fu wu qi duan cheng xu dou zai yi tai ji qi shang suo yi ta men de an quan ce lue dou xie zai le yi ge wen jian wideopen.policy li zai zhen shi huan jing li hong se biao shi de ce lue he zong se biao shi de ce lue ying gai fen bie xie zai liang ge wen jian li
c:\test3\wideopen.policy的内容如下: c:\test3\wideopen.policy de nei rong ru xia
grant codebase grant codebase
"file:/f:/work/eclipse_workspace/rmi_trial/-"{ "file:/f:/work/eclipse_workspace/rmi_trial/-"{
// allow everything for now // allow everything for now
permission java.security.allpermission; permission java.security.allpermission;
}; };
grant codebase rmijava
grant codebase rmijava
"file:/f:/work/eclipse_workspace/rmi_client/-"{ "file:/f:/work/eclipse_workspace/rmi_client/-"{
// allow everything for now // allow everything for now
permission java.security.allpermission; permission java.security.allpermission;
}; };
在策略文件里,我们赋予了本地类文件所有的权限,因为它们是可以信任的。我们对下载的代码没有指定任何权限,也就是说下载的代码不能执行需要安全权限的操作,在我们的例子中pi任务也不需要特殊的权限来执行。 zai ce lue wen jian li wo men fu yu le ben di lei wen jian suo you de quan xian yin wei ta men shi ke yi xin ren de wo men dui xia zai de dai ma mei you zhi ding ren he quan xian ye jiu shi shuo xia zai de dai ma bu neng zhi hang xu yao an quan quan xian de cao zuo zai wo men de li zi zhong pi ren wu ye bu xu yao te shu de quan xian lai zhi hang
启动rmi注册中心 qi dong rmi zhu ce zhong xin
microsoft windows (use javaw if microsoft windows (use javaw if
start is not available): start is not available):
start rmiregistry start rmiregistry
solaris os or linux: solaris os or linux:
rmiregistry & rmiregistry &
默认的注册中心将在1099上监听请求,当然你可以自己来选择监听端口,只需要在命令行后跟上端口就好了。 mo ren de zhu ce zhong xin jiang zai 1099 shang jian ting qing qiu dang ran ni ke yi zi ji lai xuan ze jian ting duan kou zhi xu yao zai ming ling hang hou gen shang duan kou jiu hao le
microsoft windows: microsoft windows:
start rmiregistry 2001 start rmiregistry 2001
solaris os or linux: solaris os or linux:
rmiregistry 2001 & rmiregistry 2001 &
启动服务器端程序 qi dong fu wu qi duan cheng xu
在执行服务器程序时,你需要设定java.rmi.server.codebase属性,这个属性指定了你的服务器端类所在的一个通过网络可以访问的路径,我将这个属性设定为http://localhost:8080/simpleexample/test/compute.jar ,我是使用tomcat服务器将compute.jar设定为网络可访问的。另外还要设定你的计算引擎运行平台的主机ip,这个网络地址一般就是注册中心所在的主机的ip地址,这个地址最终是要写入stub用于与远端对象通信的。最后别忘了指定使用的策略文件。 zai zhi hang fu wu qi cheng xu shi ni xu yao she ding java.rmi.server.codebase shu xing zhe ge shu xing zhi ding le ni de fu wu qi duan lei suo zai de yi ge tong guo wang luo ke yi fang wen de lu jing wo jiang zhe ge shu xing she ding wei http://localhost:8080/simpleexample/test/compute.jar wo shi shi yong tomcat fu wu qi jiang compute.jar she ding wei wang luo ke fang wen de ling wai hai yao she ding ni de ji suan yin qing yun hang ping tai de zhu ji ip zhe ge wang luo di zhi yi ban jiu shi zhu ce zhong xin suo zai de zhu ji de ip di zhi zhe ge di zhi zui zhong shi yao xie ru stub yong yu yu yuan duan dui xiang tong xin de zui hou bie wang le zhi ding shi yong de ce lue wen jian
java -cp java -cp
.;f:\work\eclipse_workspace\rmi_tri .;f:\work\eclipse_workspace\rmi_tri
al\compute.jar al\compute.jar
-djava.rmi.server.codebase=http://localhost:8080/simpleexample/te -djava.rmi.server.codebase=http://localhost:8080/simpleexample/te
st/compute.jar st/compute.jar
-djava.rmi.server.hostname=127.0.0.1 -djava.rmi.server.hostname=127.0.0.1
-djava.security.policy=c:\t -djava.security.policy=c:\t
est3\wideopen.policy est3\wideopen.policy
engine.computeengine engine.computeengine
启动客户端程序 qi dong ke hu duan cheng xu
启动时将类compute.pi放在网络可访问的地方,因为计算引擎在执行具体的任务时会需要该任务类的定义。我把这个类的定义(当然是.class文件)放在了http://localhost:8080/simpleexample/test/下面 qi dong shi jiang lei compute.pi fang zai wang luo ke fang wen de di fang yin wei ji suan yin qing zai zhi hang ju ti de ren wu shi hui xu yao gai ren wu lei de ding yi wo ba zhe ge lei de ding yi dang ran shi .class wen jian fang zai le http://localhost:8080/simpleexample/test/ xia mian
java -cp java -cp
f:\work\eclipse_workspace\rmi_clie f:\work\eclipse_workspace\rmi_clie
nt;.;f:\work\eclipse_workspace\rmi_trial\compute.jar nt;.;f:\work\eclipse_workspace\rmi_trial\compute.jar
-djava.rmi.server.codebase= -djava.rmi.server.codebase=
http://localhost:8080/simpleexample/test/ http://localhost:8080/simpleexample/test/
-djava.security.policy=c:\test3\wideop -djava.security.policy=c:\test3\wideop
en.policy client.computepi 127.0.0.1 98 en.policy client.computepi 127.0.0.1 98
我为client.computepi指定了两个参数:127.0.0.1指的是注册中心所在主机的ip,98指的是pi要精确到小数点后98位。 wo wei client.computepi zhi ding le liang ge can shu 127.0.0.1 zhi de shi zhu ce zhong xin suo zai zhu ji de ip 98 zhi de shi pi yao jing que dao xiao shu dian hou 98 wei
执行结果如图: zhi hang jie guo ru tu
rmijava
|
|
|