// 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 指定的特权不会被意外地授予其它的代码)。