例如,如果策略文件所含有的密钥仓库 url 指定了并不存在的密钥仓库,则在多种情况下都会得到这样的警告,例如打开文件时。即使存在警告,也仍然可以继续处理策略文件。
示例
以下各例显示了如何
启动用户策略文件的创建
最初,并没有用户策略文件(除非手动创建了一个)。因而,若要创建用户策略文件,请首先在命令行中键入以下命令来启动 policy tool。
policytool这将调出“policy tool”窗口。
无论何时启动 policy tool,policy tool 都将试图用来自有时称为“用户策略文件”的策略信息来填写本窗口。在缺省情况下,用户策略文件是宿主目录下名为
.java.policy的文件。如果 policy tool 没能查找到用户策略文件,则它将报告该情况并且显示空的“policy tool”窗口(即有标题和按钮但是其中没有数据的窗口):
![]()
现在可以通过添加项目以及保存文件来创建用户策略文件。
添加策略项
假定您想为
tests\目录上的所有类授予读取/temp/data/目录的mydata文件的权限。为此,应首先选择主“policy tool”窗口中的 add policy entry 按钮。这将调出“policy entry”对话框:
![]()
利用该对话框在 codebase 文本框中键入文件 url
file:/tests/。
保持 signedby 文本框为空,这是因为您不需要将代码签名。
要添加权限,请选择 add permission 按钮。这将调出“permissions”对话框:
![]()
要添加权限:
- 选择“permission:”下拉列表中的“file permission”。现在,完整的权限类型名 (java.io.filepermission) 就出现在下拉列表右边的文本框中。
- 在标签为“target name:”的列表右边的文本框中键入以下路径:
/temp/data/mydata- 通过选择“actions:”下拉列表中的“read”以指定读权限。
现在,“permission”对话框如下所示:
![]()
当完成指定权限信息之后,请选择 ok 按钮。新权限就出现在“policy entry”对话框的某行中。
![]()
现在就完成了对该策略项的指定,因此请选择 done 按钮。现在,“policy tool”窗口中就有了代表该策略项的行。该行中只是包含了 codebase 值:
![]()
指定密钥仓库
假定您还想要将对
/tmp/目录中的所有文件的读权限授予来自 url“http://java.sun.com/”的且由别名“duke”签名的代码。假定您还要赋予这类代码权限以初始化对任何主机发出的套接字连接,则需要完成两件事:
- 指定包含别名的密钥仓库,并且
- 创建策略项来授予权限。
要为策略项的任何 signedby 部分中所指定的别名指定包含密钥信息的密钥仓库,请选择主“policy tool“窗口的 edit 菜单下的 change keystore 命令。
这将调出一个对话框,在对话框中可以指定新的密钥仓库 url,也可指定密钥仓库类型。
例如,要指定
/tests/目录中名为 "mykeystore" 的密钥仓库,应将下列 file: url 键入标有 "new keystore url" 的文本框:file:/tests/mykeystore如果密钥仓库类型是缺省类型,如安全属性文件中的“keystore.type”属性值所指定的,则不必键入“new keystore type”值。该属性的缺省值是“jks”(sun microsystems 所支持的专用密钥仓库类型)。
要指定密钥仓库类型,请将其值键入到标为“new keystore type”的文本框中。例如,要指明密钥仓库类型是“jks”类型,则请键入
jks其结果是:
![]()
当完成指定密钥仓库 url 和类型之后,请选择 ok。现在,标为“keystore:”的文本框中就填写了所指定的 url 和类型。
下一步,您需要指定策略项: