5.2. jdbc 与java应用程序\r对于一个普通的java应用程序(例如全部用java代码而不是不可靠的applet )jdbc将从本地的类路径里面获得驱动,并且允许应用程序自由存取文件,远程服务器等等.但是与applet一样,如果由于某些原因一个没有验证的sun.sql.driver类从远程的来源里面获得,那么这个驱动只能与相同地方来的代码配合.5.3. driver的安全责任jdbc driver可能在各种情况下使用,所以驱动的编制者遵循一定的简单的安全规则,从而避免applet做非法的数据库连接.如果所有的驱动都象applet一样从网上下载,那么这些原则将是不必要的,因为普通的安全规则已经对它做了限制.但是驱动的编写者必须记住一旦他们的驱动获得成功,用户将在本地磁盘安装这些驱动,那么驱动将成为java环境中一个被信任的部分,所以必须确信它不会被来访的applet所滥用.所以我们鼓励所有的驱动编写者必须遵循一定安全原则.所有这些原则都是在连接打开的时候使用.这正式驱动与虚拟机器检查当前调用者是否真的可以与指定的数据库连接的时刻.一旦连接建立就不必做更多的检查了.5.3.1. 分享tcp/ip连接的时候必须谨慎\r如果一个jdbc驱动试图打开一个 tcp 连接,那么这个打开会被java 安全管理机制自动检查.这个机构会检查当前调用栈里面有没有applet,如果有那么就限定它可以访问的机器集合.所以一般地jdbc驱动可以把tcp建立检查留给java虚拟机.但是如果一个jdbc驱动试图在多个数据库连接之间共享一个tcp连接,那么驱动就必须自己负责检查每个调用者是否真的被允许与目标数据库联系.例如如果我们为applet a打开了一个通往机器foobah 的tcp连接,这并不意味着applet b被自动允许来共享这个连接.applet b可能没有任何访问机器foobah的权力.所以在允许某个程序重用一个现成的tcp连接之前,jdbc 驱动必须通过安全机构来检查当前的的调用者是否可以访问这个连接.通过下面的代码可是实现这个功能.... 下一页