0

LinuxとWindowsの両方について、単一のセキュリティポリシーファイルをお客様に出荷したいと思います。java.securityファイルに、ファイルを指す行を追加しますが、パスの違いにより、WindowsとLinuxで異なる方法で指定する必要があります。

policy.url.3=file:/${our.home}/lib/OurSecurity.policy  # Windows
policy.url.3=file:${our.home}/lib/OurSecurity.policy   # Linux

変数our.homeは「C:\ foo」として定義されているため、Windowsでは「file:」の後の最初の「/」が必要です。ポリシーファイル自体にも同じ問題があります。

grant codeBase "file:/${our.home}/-"   // Windows
grant codeBase "file:${our.home}/-"    // Linux

私は特に、プラットフォームに依存しない方法でコードベースを指定するための賢い方法を探しています。ちなみに、私たちの.homeを再定義することは、FilePermission句で必要になるため、実際にはオプションではありません。

4

2 に答える 2

1

私の場合は、別のファイルが必要であるという事実を受け入れ、「/」を削除するスクリプトを使用して、WindowsバージョンからLinuxバージョンを生成します。

ただし、本当に同じファイルを使用する必要がある場合は、Windowsで「/」を表す別の環境変数を定義し、Linuxで空白にするだけで、ある問題を別の問題と交換できます。

# our.hack = "/" on windows
# our.hack = "" on linux
policy.url.3=file:${our.hack}${our.home}/lib/OurSecurity.policy

おそらく、our.hackは実稼働環境での最良の名前ではありませんが、あなたはその考えを理解しています。変数は他の目的には使用されないため、アプリの他の部分に干渉しないようにする必要があります。

于 2012-10-12T19:30:04.733 に答える
0

同じポリシーファイルを使用するのはなぜですか?
JREはLinuxとWindowsで異なるため、それに従い、インストールごとに異なるバージョンを維持する必要があります。この
場合 、IMOは2つのファイルを持つメンテナンスの問題はありません。 また、Javaの更新によってポリシーファイルが削除される可能性があるという事実に注意を向けることをお勧めします。

于 2012-10-12T21:03:02.277 に答える