0

strutsのアクションクラス(つまり、RMIクライアント)からRMI serevrにアクセスしようとすると(jspボタンをクリックして)、この実行が発生します。

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クラスで同じコードを試した場合は例外を超えました。

4

3 に答える 3

2

これを見つけました:

次のようなセキュリティ ポリシー ファイルを設定します。

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

起動コマンドで:

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

出典:リンク

試してみて、うまくいくかどうか教えてください。

于 2012-06-13T09:47:46.843 に答える
0

新しい Java 7 および Java 6 バージョンでは、検証に変更があります。 バグ ID: 6861062 java classes_security 証明書チェーンの検証で MD2 を無効にします

Jara ファイルに署名するとき、いくつかの警告メッセージが表示され、コマンドを実行すると、jarsigner MyTools.jar -verify -verbose -certs が表示されました。

メッセージがありました: X.509, OU=Class 3 Public Primary Certification Authority, O="VeriSign, Inc.", C=US [証明書は 29.01.96 01:00 から 02.08.28 01:59 まで有効です] [ CertPath が検証されていません: アルゴリズムの制約チェックに失敗しました: MD2withRSA]

私の解決策は次のとおりです。 - 別のバージョンの JDK を使用して署名し、JRE プラグインを使用します。- このアルゴリズムを使用しないように、証明書のセキュリティを更新してください。

于 2013-09-13T08:34:30.420 に答える
0

このエラーを回避するには、次の点に注意してください。

  1. サーバーのインターフェース名がクライアントのインターフェース実装と同じであることを確認する必要があります。
  2. パッケージ名、つまりクライアントでインターフェイスを配置する場所が、サーバーでインターフェイスを配置するパッケージ名と同じであることを確認してください。
于 2013-03-28T19:48:20.657 に答える