A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 晴雨 中级黑马   /  2018-12-25 10:57  /  1164 人查看  /  15 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

login.conf
policy
resourcepolicy.xml
run.bat
在试图运行这个示例程序之前,请确保更新了 run.bat、policy 和 resourcepolicy.xml 文件中的路径。缺省情况下,所有的密码都是“passw0rd”。

示例如何工作
该示例程序提示输入用户标识和密码。它用 users.xml 文件中的条目核对所提供的用户标识和密码。在认证了用户之后,程序设法创建一个 userprofile 类实例,修改它并从中读取。缺省情况下,userprofile 类的所有者是 jane(jane)。当 jane 登录时,三个操作全部成功。当 john(john)登录时,只有创建操作成功。当 jane 的经理 lou(lou)登录时,只有第一个和最后一个操作成功。当系统管理员(admin)登录时,操作全部成功。当然,只有当提供的 resourcepolicy.xml 文件未被修改时,上述这些才都是真的。

示例安装
下面的安装指导假设您正在使用 jdk 1.3 并且已经把文件解压缩到 d:\jaasexample 目录。通过将文件解压缩到这个目录,您可以省去一些工作;否则您就必须使用正确的路径名修改 policy 和 resourcesecurity.xml 策略文件。

下面是运行该示例需要做的工作:

下载这个示例的源文件。

把 jaas.jar 和 jaasmod.jar 复制到 jdk jre\lib\ext 目录(即 d:\jdk1.3\jre\lib\ext)。

向位于 jdk 的 jre\lib\security 目录(即 d:\jdk1.3\jre\lib\security)中的 java.security 文件的末尾添加下面的字符串:auth.policy.provider=com.ibm.resource.security.auth.xmlpolicyfile。

执行 run.bat 文件。

结束语
类实例级授权把访问控制分离到一个通用框架(该框架使用基于所有权和特定关系的策略)中。然后管理员可以在应用程序的生命周期内更改这些策略。用这种方法扩展 jaas 减少了您或另一个程序员必须在应用程序生命周期内业务规则发生更改时重写代码的可能性。

通过将关系字符串抽象为类可以进一步扩展特定关系这个概念。不调用 resource 实现类的 fulfills(subject user, string relationship) 方法,而只要调用 relationship 实现类中定义的新 fulfills(subject user, resource resource) 方法。这样就会允许许多 resource 实现类使用相同的关系逻辑。

6.java的安全性
1. the security manager是一个application-wide object ( java.lang.securitymanager)
每个java application都可以有自己地security manager,但是默认地java application没有一个security manager

可以通过下面地代码得到一个security manager
try
{
system.setsecuritymanager(new securitymanager(“--”));
}
catch( )
{}

2.
jdbc
在 jdbc 2 开发的过程中,sql99 还处在一种变化不定的情况下。现在规范已经完成了,而且数据库厂商已经采用了部分标准。所以自然地,jdbc 规范就跟着将自己与 sql99 功能的一部分相统一。最新的 jdbc 规范已经采用了 sql99 标准中那些已经被广泛支持的功能,还有那些在五年内可能会获得支持的功能。
1. datasource
在jdbc2.0 optional package中,提供了透明的连接池(connection pooling)。
一旦配置了j2ee应用服务器后,只要用datasource获取连接(connection),连接池(connection pooling)就会自动的工作。

如果用户希望建立一个数据库连接,通过查询在jndi服务中的datasource,可以从datasource中获取相应的数据库连接。
datasource被认为是从jndi中获取的网络资源。

datasource在池中保存的对象都实现了pooledconnection接口。
当应用程序向datasource请求一个connection时,它会找到一个可用的pooledconnection对象。
如果连接池空了,它就向connectionpoolecdatasource请求一个新的pooledconnection对象

通过使用 datasource 接口 (jdbc 2.0) 或 drivermanager (jdbc 1.0) 接口,j2ee 组件可以获得物理数据库连接对象(connection)。要获得逻辑(合用的)连接,j2ee 组件必须使用以下这些 jdbc 2.0 合用管理器接口:

javax.sql.connectionpooldatasource 接口,该接口充当合用的 java.sql.connection 对象的资源管理器连接 factory。每家数据库服务器供应商都提供该接口的实现
(例如,oracle 实现 oracle.jdbc.pool.oracleconnectionpooldatasource 类)。
javax.sql.pooledconnection 接口,该接口封装到数据库的物理连接。同样,数据库供应商提供其实现。
对于那些接口和 xa 连接的每一个,都存在一个 xa(x/open 规范)等价定义。

2. resultset
在jdbc2.0中,为了获得一个uptatable result,在query语句里必须包含primarykey,并且查询的内容里必须来自一个table

ava.sql.resultset接口中定义了三种类型的结果集
type_forward_only
type_scroll_insensitive 这种类型的结果集支持双向滚动
type_scroll_sensitive

如果要建立一个双向滚动的resultset,一定要在建立statement的时候使用如下参数
statement stmt = conn.createstatement(resultset.type_scroll_insensitive,
resultset.concur_read_only);

3. jdbc驱动程序
连通oracle8.1.6的jdbc 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
把oracle8.1.6/lib/jdbc/*.zip copy 到 %java_home%/jre/lib/ext/*.jar

如果光copy不ren为.jar是没有用的。
4. 事务处理
本地事务
java.sql.connection接口可以控制事务边界(即开始和结束)。
在事务开始的时候调用setautocommit( false ), 而在中止事务时调用rollback或commit()方法。这类事务叫本地事务。

分布式事务
但是,在特定的情况下,可能有多个客户(例如两个不同的servlet或ejb组件)参与了同一个事务。
或者,客户在同一个事务中可能会执行跨越多个数据库的数据库操作。
jdbc2.0 optional package 同jta一起来实现分布式样事务。

5. 一些技巧
检索自动产生的关键字
为了解决对获取自动产生的或自动增加的关键字的值的需求,jdbc 3.0 api 现在将获取这种值变得很轻松。要确定任何所产生的关键字的值,只要简单地在语句的 execute() 方法中指定一个可选的标记,表示您有兴趣获取产生的值。您感兴趣的程度可以是 statement.return_generated_keys,也可以是 statement.no_generated_keys。在执行这条语句后,所产生的关键字的值就会通过从 statement 的实例方法 getgeneratedkeys() 来检索 resultset 而获得。resultset 包含了每个所产生的关键字的列。清单 1 中的示例创建一个新的作者并返回对应的自动产生的关键字。

15 个回复

倒序浏览
优秀
回复 使用道具 举报
除了佩服还是佩服
回复 使用道具 举报
看这个就知道你学的肯定很认真
回复 使用道具 举报
回复 使用道具 举报
除了恐惧和欲望,还有什么可以激励自己长期地努力?
回复 使用道具 举报
世上最重要的事,不在于我们在何处,而在于我们朝着什么方向走。
回复 使用道具 举报
加油,一起学习丫
回复 使用道具 举报
选择了,便走下去。
回复 使用道具 举报
发光并非太阳的专利,你也可以发光。加油
回复 使用道具 举报
加油,一起学习丫
回复 使用道具 举报
学习要加,骄傲要减,机会要乘,懒惰要除。诶,激励自己的名言,希望对你有用
回复 使用道具 举报
故天将降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行拂乱其所为,所以动心忍性,曾益其所不能。
回复 使用道具 举报
你说 “生命在于不断超越自己”,那来到这里的我已经赢了一半,你还会等我么?
回复 使用道具 举报
不要等待机会,而是要创造机会。现在我来了,希望我们都可以坚持,早日用知识达到暴富
回复 使用道具 举报
你说 “生命在于不断超越自己”,那来到这里的我已经赢了一半,你还会等我么?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马