java.rmi.UnmarshalException:错误解组

时间:2012-06-13 09:29:09

标签: jsp struts rmi

当我尝试从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类中尝试相同的代码时,获得了上述异常。

3 个答案:

答案 0 :(得分:2)

发现这个:

设置安全策略文件,例如:

grant {  
permission java.security.AllPermission "", "";  
};

在你的启动命令中:

-Djava.security.policy=/Security/policy.all

来源:link

尝试一下,让我知道它是否有效。

答案 1 :(得分:0)

请务必注意以下事项以避免此错误:

  1. 您必须确保服务器中的接口名称与客户端中的接口工具相同。
  2. 确定程序包名称,将接口放在客户端的位置与将接口放在服务器中的程序包名称相同。

答案 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插件。 - 更新证书安全性以便不使用此算法。