当我尝试从struts的动作类(即RMI客户端)访问RMI serevr时(点击jsp按钮),我得到了这个execption
java.rmi.UnmarshalException: error unmarshalling return; nested exception is:
java.lang.ClassNotFoundException: com.mindcraft.queryExecutor.actionclass.ExecutorInterface (no security manager: RMI class loader disabled)
以下是我的RMI客户端代码段
try{
ExecutorInterface p=(ExecutorInterface)Naming.lookup("//localhost:2007/exec1");
System.out.println("Inside client.."+ p.toString());
int a= p.getJobStatus("2");
System.out.println("a..." + a);
p.killJob("1");
p.executeJob(id, usrname, pswd);
System.out.println("Threads started, main ends\n");
}
catch(Exception e)
{
System.out.println("Execption in RMI..."+ e);
e.printStackTrace();
}
当我在使用public static void main()的单独文件中尝试上面的代码时,这很好,但是当在struts框架的Action类中尝试相同的代码时,获得了上述异常。
答案 0 :(得分:2)
发现这个:
设置安全策略文件,例如:
grant {
permission java.security.AllPermission "", "";
};
在你的启动命令中:
-Djava.security.policy=/Security/policy.all
来源:link
尝试一下,让我知道它是否有效。
答案 1 :(得分:0)
请务必注意以下事项以避免此错误:
答案 2 :(得分:0)
新Java 7和Java 6版本的验证发生了变化。 错误ID为:6861062 java classes_security在证书链验证中禁用MD2 。
签署Jara文件时,我收到了一些警告消息,执行命令时: jarsigner MyTools.jar -verify -verbose -certs
我收到了消息: X.509,OU =第3类公共主要证书颁发机构,O =“VeriSign,Inc。”,C = US [证书有效期为29.01.96 01:00至02.08.28 01:59] [CertPath未验证:算法约束检查失败:MD2withRSA]
我的解决方案是: - 使用另一个版本的JDK签名和JRE插件。 - 更新证书安全性以便不使用此算法。