java學習心得筆記
該示例包含四個附加的文件:
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