3

rmi接続を確立しようとしています。私は多くのセキュリティ問題に遭遇しましたが、これらすべてを乗り越える方法を見つけることができませんでした. jar ファイルを次のように実行します。

java -Djava.security.policy=java.security.AllPermission -jar "myjarfile"

これを作成するために使用したコードは次のとおりです。

public class server
{
    public static void main(String args[])throws Exception
    {
    if (System.getSecurityManager() == null)
        System.setSecurityManager ( new RMISecurityManager() {
        public void checkConnect (String host, int port) {}
        public void checkConnect (String host, int port, Object context) {}
        });

    try
    {
        sampleserverimpl server = new sampleserverimpl();
        System.out.println("SERVER IS WAITING");
        LocateRegistry.createRegistry(2020);

        //Runtime.getRuntime().exec("rmiregistry 2020");
        Naming.rebind("//localhost:2020/SERVER", server);

    }
    catch(Exception e)
    {
        System.out.println(e);
    }
}
};

私が受け取っているエラートレースは次のとおりです。

Exception in thread "RMI TCP Connection(idle)" java.security.AccessControlExcept
ion: access denied (java.net.SocketPermission 127.0.0.1:31199 accept,resolve)jav
a.rmi.UnmarshalException: Error unmarshaling return header; nested exception is:

    java.io.EOFException

これを回避するためにさまざまな方法を試しましたが、ここで問題を確認できる人はいますか?

ありがとう

4

2 に答える 2

6

-Djava.security.policyアクセス許可を含むポリシー ファイルを指す URL を受け入れます。ファイルが含まれる-Djava.security.policy=/some/path/my.policyJVM引数として:my.policy

grant {
  permission java.security.AllPermission;
};

SecurityManagerまた、コードに存在するNULL チェックと手動での-Djava.security.manager.

最終的な JVM 呼び出しは次のようになります。

java -Djava.security.manager -Djava.security.policy=/some/path/my.policy
于 2010-11-18T11:46:09.870 に答える
0

これは 2 つの別個の例外です。1 つ目は、許可の問題です。2 番目の EOFException には、さまざまな原因が考えられます。さらに支援するには、 java -version と完全なスタック トレースを確認する必要があります。

于 2010-11-18T11:45:25.190 に答える