【发布时间】:2012-06-21 03:26:59
【问题描述】:
我已经创建了下面的 bat 文件来运行我的 RMI 服务器
@echo Off
set classpath=C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\RMI_Server\bin\;
set classpath=C:\policy.all;
set classpath=C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\RMI_Server\log4j-1.2.12.jar;
set classpath=C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\RMI_Server\log4j-1.2.15.jar;
set classpath=C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\RMI_Server\log4j.jar;
set classpath=C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\RMI_Server\log4jProperties.jar;
set classpath=C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\RMI_Server\bcprov-jdk15-144.jar\bcprov-jdk15-144.jar;
set classpath=C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\RMI_Server\sevenzipjbinding.zip;
set classpath=C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\RMI_Server\sevenzipjbinding-AllPlatforms.zip;
set classpath=C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\RMI_Server\apache-log4j-1.2.17\log4j-1.2.17.jar;
set classpath=%classpath%;.
java -Djava.security.manager -Djava.security.policy=C:\policy.all
java -Xms512m -Xmx1024m ExecutorServer -Djava.rmi.server.codebase=file:C:/Program Files/Apache Software Foundation/Tomcat 6.0/webapps/RMI_Server/bin/ -Djava.security.policy=C:\policy.all
pause
我能够运行我的 RMI 服务器 但是当 RMI 尝试连接到 RMI 服务器时,我得到以下异常
Execption in RMI...java.rmi.UnmarshalException: error unmarshalling return; nest
ed exception is:
java.lang.ClassNotFoundException: ExecutorInterface (no security manager
: RMI class loader disabled)
java.rmi.UnmarshalException: error unmarshalling return; nested exception is:
java.lang.ClassNotFoundException: ExecutorInterface (no security manager
: RMI class loader disabled)
at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
at java.rmi.Naming.lookup(Unknown Source)
at com.mindcraft.queryExecutor.actionclass.acInsertExecutorDetails.rmiCl
ientCall(acInsertExecutorDetails.java:272)
at com.mindcraft.queryExecutor.actionclass.acInsertExecutorDetails.execu
te(acInsertExecutorDetails.java:218)
我在运行时提供了策略文件和代码库。我没有得到我在这里缺少的东西。 如何在rmiregistry的路径中添加lcas?
【问题讨论】:
-
您可能想通过打印
System.getSecurityManager()(并获取"setSecurityManager"的代码)来检查安全管理器是否被破坏。我还建议使用 IIRC"java.rmi.server.codebase"禁用移动代码加载(在“Java 编程语言的安全编码指南,版本 4.0”oracle.com/technetwork/java/seccodeguide-139067.html#3-8 中是错误的)。分配最低合理权限也是一个好主意。
标签: java rmi distributed-computing