// Enable printing, when loaded from a local file grant codeBase "file:///e:/everett/article/SecuritySamples.jar" { permission java.lang.RuntimePermission "queuePrintJob"; };
// Enable a network connection, when loaded from a local file grant codeBase "file:///e:/everett/article/SecuritySamples.jar" { permission java.net.SocketPermission "www.ibm.com", "connect,accept,resolve"; };
清單 6 顯示如何在 grant 語句中授予和清單 5 中相同的兩種許可;假如 jar 文件是從服務器載入的,您會用到這種類型的許可。
清單 6. java.policy:接受服務的 Weblet 許可
// Enable printing and connections, when served by a web server grant codeBase "http://pwe.endicott.ibm.com/article/SecuritySamples.jar" { permission java.net.SocketPermission "www.ibm.com", "connect,accept,resolve"; permission java.lang.RuntimePermission "queuePrintJob"; };
當然,必須對 codebase 中定義的特定目錄或服務器進行非凡配置以適合您的安裝環境。
注重,當 codebase 被作為特定的 jar 文件定義時,grant 中的 codebase 可以被定義為下面幾種類型:
一個特定的 jar 文件(本地的或者接受服務的) 特定目錄中的 jar 文件 目錄樹中的 jar 文件 來自特定服務器的 jar 文件 帶有一個非凡電子簽名的 jar 文件
授予許可時最好是定義得盡可能明確。假如一個 Weblet 需要附加的許可,最好是把這個 Weblet 的類隔離到一個專門的 jar 文件中,然后只需對該 jar 文件授予那些許可即可。這樣可以減少無意負面影響的發生氣率(也即,為一個特定 Weblet 指定的特權不會被意外地授予其它的代碼)。