0

JavaServer を RMIRegistry にアタッチするこのコードがあります。これは PrivilegedAction で行われます。

        //start javaengineserver
        AccessController.doPrivileged(new PrivilegedAction() 
        {
            public Object run() 
            {
                try
                {
                    startServer(port, getSession());
                } catch (RmiException e) 
                {
                    e.printStackTrace();
                    AWTSwingErrorDialog.show(e, "Error while attaching JavaEngineServer to rmiregistry.exe");
                }
                return null;
            }
        });

メソッドに関する他のいくつかの質問を見つけましたがdoPrivileged、それらはすべて、環境変数の取得などの追加のアクセス許可が必要なコマンドがいくつかあると言っています。

メソッドの背後にあるコードを投げてstartServer(port, session)みたところ、追加のアクセス許可が必要と思われるものは見つかりませんでしたが、すべての使用法と機能を手動でテストする以外に、それを確認する方法はありますか?

ありがとうございました。

4

1 に答える 1

1

(信頼できる)簡単な方法はないと思います。ただし、信頼できない方法があります。一時的にそのコードを を呼び出すだけのものに置き換えstartServer、セキュリティ サンドボックスで実行してみてください。

ただし、doPrivileged電話が必要だと思います。portその名前とパラメーターを持つメソッドは、 ServerSocket. メソッドが操作を許可しない場合、後者は失敗SecurityManager.checkListenします...典型的なサンドボックスでは実行されません。(私たちは通常、信頼できないコードがステルス ネットワーク サービスを開始できるようにしたくありません...)

于 2013-08-16T10:37:11.810 に答える