分享
 
 
 

初碰J2EE:RMI灰头灰脑篇

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

RMI概念:为通过网络执行其他机器上的代码,传统的方法不仅难以学习,而且易出错。解决这个问题的最佳方法是:某些对象正好位于另一台机器,我们可以发送一条消息,并获得返回结果,就像位于自己的本机器一样。java远程方法调用(rmi)特性使客户机上运行的程序可以调用远程服务器上的对象。远程方法调用特性使java编程人员能够在网络环境中分布操作。

接触java有一段时间了,平时就只是写点jsp+servlet+bean.某天突然心血来潮,决定去碰碰j2ee中的其他技术,先是javamail,这个简单(嘿嘿,其实就只是写几个例子而已),没碰到什么让我头疼的问题.接下来EJB,对实现EJB需要两个接口一个类的做法感到非常的厌烦(不过好像听说EJB3.0就不需要了,还接触过,有机会看看资料).然后就是RMI了.照着书上依样画葫芦,代码如下:

package rmi;

import java.rmi.*;

public interface PerfectTimeI extends Remote {

long getPerfectTime()throws RemoteException;

}

package rmi;

import java.net.*;

import java.rmi.*;

import java.rmi.registry.*;

import java.rmi.server.*;

public class PerfectTime extends UnicastRemoteObject implements PerfectTimeI {

public PerfectTime()throws RemoteException{

super();

}

public long getPerfectTime()throws RemoteException{

return System.currentTimeMillis();

}

public static void main(String[] args)throws Exception{

System.setSecurityManager(new RMISecurityManager());

java.rmi.registry.LocateRegistry.createRegistry(2005);

try{

PerfectTime pt=new PerfectTime();

Naming.rebind("//localhost:2005/PerfectTime",pt);

System.out.println("Ready to do Time");

}catch(Exception e){

e.printStackTrace();

}

}

}

package rmi;

import java.rmi.*;

import java.rmi.*;

public class DisplayPerfectTime {

public DisplayPerfectTime(){

super();

}

public static void main(String[] args){

System.setSecurityManager(new RMISecurityManager());

try{

PerfectTimeI t=(PerfectTimeI)Naming.lookup("//localhost:2005/PerfectTime");

for(int i=0;i<10;i++){

System.out.println("PerfectTime:"+t.getPerfectTime());

}

}catch(Exception e){

e.printStackTrace();

}

}

}

然后运行在JBX里点击run??? 结果$#$%#!!%$#

java.rmi.StubNotFoundException: Stub class not found: rmi.PerfectTime_Stub;

晕,遇到第一个问题.忘记生成Stub和Skel了.在JBX里找了半天也没找到可以生成这两个文件的命令或者选项......郁闷!!看来只会回到原始社会用命令行模式了.

运行cmd.exe

d:\rmi\classes>rmic PerfectTime? 回车

error:Class test.PerfectTime not found.

1 error

...........

MyGod.我都看见这个class了你这个RMIC竟然没看见,难道比我近视.

记起刚接触java的时候执行头一个class的时候也发生过这样的问题,当初是怎么解决的呢,

@_@晕,原来还要加classpath.赶紧把d:/rmi/classes/加进了classpath中(中间要感谢水人对我的提醒).在运行cmd.exe

d:\rmi\classes>rmic PerfectTime? 回车

d:\rmi\classes>

回到rmi目录下一看.哈哈真的生成了PerfectTime_Skel.class和PerfectTime_Stub.class这两个文件了.Y

好,回到JBX继续run我的程序.这次抛出了

java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:2005 connect,resolve)

好像没有权限去执行这个服务端程序.???!!!我自己的机器我执行程序都要权限吗!TMD.心里骂了无数边这个破东西.没办法上网查查到底是什么问题.

结果找了一些资料都说要配置安全策略.但都说不清不楚.还说调用的时候要加参数之类的.逐一试过.都不行.头有点麻了.从我学JAVA以来还没有在一个例子上被折腾这么长时间的.回头又看了看例子的源码.发现有一句代码:System.setSecurityManager(new RMISecurityManager());服务端和客户端都用了这样的一句.感觉这句话可要可不要,心里想着注释掉看看.继续run我的程序..........

C:\bea\jdk141_05\bin\javaw -classpath "D:\rmi\classes;C:\bea\weblogic81.....

Ready to do Time

耶!!!!竟然运行成功了.接着把客户端的哪句话也注释掉了.同样,也运行成功了.

然后把刚才添加的几个安全策略文件也删了,在run.结果还是成功!!

虽然运行成功了,但又有新的问题出现了,为什么把这句话去掉后就能运行了.

上google.搜索System.setSecurityManager(new RMISecurityManager());结果找到一篇文章上说:

为了防止可能发生的任何安全上的疏忽,在程序中需要透过System.setSecurityManager(new RMISecurityManager())来设定系统安全相关的策略.晕,弄了半天还是安全策略没有配好,我不是真的运行成功了,我只是绕开了安全策略的限制而已.

相关文章的地址:http://my.so-net.net.tw/idealist/Java/RMI.html

上面还有安全策略的详细配置..(这个等我慢慢琢磨,明白了再写出来.嘿嘿.今天就偷偷懒吧)

待续.....TO BE CONTINUE

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有