怎么?你动用了两个webserver么?呵呵,照我的理解,client端要下载的stub应该在服务器启动的时候指定的codebase,也就是说客户端应该是:
java -Djava.rmi.server.codebase=http://172.16.4.95:8001/ -Djava.sec
urity.policy=java.policy client.ComputePi 172.16.4.95 20另外,最好在codebase中指定jar文件.
java -Djava.rmi.server.codebase=http://172.16.4.95:8001/ -Djava.sec
urity.policy=java.policy client.ComputePi 172.16.4.95 20另外,最好在codebase中指定jar文件.
解决方案 »
- 如何来捕获框架异常?
- 怎么调用jboss的jndi
- struts的action mapping的问题
- 请问在J2EE项目中怎么写全局配置参数比较合理?
- 各位高手请帮忙看下:"jsp1.jsp": java.lang.NoClassDefFoundError: org/apache/tools/ant/util/FileUtils错误
- 一道面试题
- Log4j配置:日志文件路径问题
- JAVA Excel数据已经输出到控制台,怎么才能对这些数据进行操作
- 请问谁有tomcat5.0.25下载?现只能下到5.0.28
- 关于hibernate 一对多 添加记录的问题
- 各位大哥救命阿。急得头要撞墙了!!!!
- 现在决定学java,请朋友门介绍书籍,可以是电子文档(最好有下载地址)
permission java.io.FilePermission "c:\\rmiserver\\classes\\-", "read";
permission java.io.FilePermission "c:\\rmiclient\\classes\\-", "read";
然后在运行java程序时换成file:///c:/rmiserver/classes/ ......
成功。然后再换回去,还是成功,没法再复现错误了,也许当时我漏掉了什么环境?to jxspace(彼黍离离)
客户端程序的codebase如果换成是 8001 端口的,会报告 client.Pi class not found.纠正了原来一个错误的认识:
设定codebase是干什么用的?原来以为是远程系统用的,用来获取相应的类文件;现在明白,是本地的java程序所使用的。还存在一个疑问:
为什么必须要设置codebase?或者,在什么样的情况下可以不设置?
在我的实验里,服务器端服务不设置codebase,就会找不到engine.ComputeEngine_Stub这个类,而这个类在classpath中是可以找到的。同样在客户端,不设codebase的话会找不到client.Pi
codebase的确是供远程下载类来用的,如服务器端启动,需要查验远程对象的stub是否可以从本地类路径或者是codebase指定的路径找到.而对于客户端启动,也是如此,先看本地是否存在远程对象的stub,如果没有,也同样到codebase指定地方下载到本地。--为什么必须要设置codebase
正如前面所说,codebase是给下载类来使用的。需要澄清的是,rmi的server与client可以在同一个机器上运行,也可以在不同机器上运行。本地运行仅仅是属于开发测试级别,因而,不必单独启动rmiregistry,也不必加载rmisecuritymanager,也不需要策略安全文件,sun提供的很多代码例子可以不必指定上面所说的条件就运行,也就是基于本地模式(本地进程间访问)。值得指出的是,在启动虚拟机的时候,必须让服务器端或者客户端都能找到stub类,无论你的类是jar或者unjar的形式。
远程访问应给出codebase,给出相应的策略安全文件。