websphere資料庫
『壹』 關於websphere與oracle資料庫的問題
XMLcode
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/oracle</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
java code:
DataSource ds = null;
InitialContext ctx = new InitialContext();
ds = (DataSource) ctx.lookup(在websphere中建立得jndi名字);
Connection conn = ds.getConnection();
『貳』 websphere 資料庫連接池比其他連接池好么
websphere的連接池
還是先來段題外話:記得有人說過,websphere只有版本6以後才算是websphere,個人很贊同。websphere 5以及以前的版本。。。還是忘了吧。
其實websphere的連接池秉承ibm一貫的風格:功能強大,使用復雜:
進入控制台使用「JDBC提供程序」功能菜單進行連接池的基本配置,一路下來,不同的資料庫配置方式不盡相同,最奇怪的是還要單獨手工加上user和password參數,如果沒有
資料指導的話還真是摸不著頭腦。這些基本設置還是網上找吧很多的。連接池設置完還需要設置數據源,jndi名字一樣與之前的對應:jdbc/myapp
高級設置包括初始化連接數,最大連接,連接有效性檢查,不使用超時。
連接池監控:使用運行監控菜單,里邊會有一個監控項目選擇,選jdbc監控即可,可惡的是一開始彈出什麼伺服器操作系統需要安裝什麼圖形化控制項,選擇是那麼就得去找到控制項在操作系統(linux)下安裝,然後很多的依賴組件都沒有。。。搞了半天才發現選擇否,監控數據以及圖形一樣能出來嘛,真是要怒了。
雖然經過一番波折但是監控的內容還是很強大的,就連接池來說一樣包括當前連接數、曾經達到的峰值、可以使用的連接數、從資料庫打開的連接數、曾經關閉的連接數。。。其中前3項是我最關注的,比較奇怪的現象是應用剛啟動的時候已開啟的連接數量竟然沒有達到初始定義的連接數量,不清楚websphere是怎麼個計算機制。
另外在壓力大的時候可使用的連接數會是負數,當時很奇怪,想想也瞭然了,那個負數肯定是排隊等待的數量了
使用評價:在具體項目應用中,此連接池的持續運行的穩定性相當強,在大並發量的壓力下性能也足夠優秀,另外在一些異常情況下連接池裡的連接能夠及時釋放,連接池監控配置有些復雜,但是配置好後各項指標一目瞭然並且有圖形顯示 。
總結:
這種商業級別的連接池功能強大,使用穩定,性能優秀,監控到位。
下面這個話題可能和比較本身沒有直接關系,但個人認為應該是更有價值的一些經驗分享吧,那就是---這么多指標配置,那些最大和最小連接數以及其他一些必要的配置指標,在一個正式的生產項目中到底應該配置什麼值呢?
其實這個值首先還是要根據具體的項目情況、數據規模以及並發數來制定的(盡管像是套話,但是我們研發人員嚴謹的作風還是必要的:)。具體而言在中型偏小型的項目--給個數值把,用戶數300到3000,數據量100萬到1億---中,建議websphere最小200最大300,前提是設置的最小內存要在1G以上,當然如果條件允許內存越大越好,不過32位機內存1.5G的限制是一定的(64位嘛我願意設個4G內存過來,速度提升的感覺很爽啊)。這個數字出來以後相信會有不少問題要拋過來,
1 為什麼是200或300而不是更高?
回答: 再分配多了效果也不大了,一個是應用伺服器維持這個連接數需要內存支持,剛才說了32位的機器只能支持到1.5G,並且維護大量的連接進行分配使用對cpu也是一個不小的負荷,因此不宜太大。
2 為什麼不小一點?
回答: 如果太小,那麼在上述規模項目的並發量以及數據量上來以後會造成排隊現象,系統會變慢,資料庫連接會經常打開和關閉,性能上有壓力,用戶體驗也不好。
3 為什麼websphere最小最大不一樣
回答: 其實和分配內存的最小最大值的情況一樣,一般都推薦2個值應該一致,都放在內存里就好了嘛。但是ibm官方推薦2個值要有區別---官方說法還是要聽的
4 其他開源連接池的分配方案還沒說呢?
回答: 開源的個人認為到100就可以了,再高他也不會太穩定,當然1G的最小內存是一定要給tomcat分的
『叄』 websphere 如何創建資料庫用戶注冊表
需要說明的是,WPS 6.0架構在WebSphere Application Server 6.0(WAS 6.0)的基礎之上,因此WPS的安全性方面設置和WAS完全一致。
定製用戶注冊表需要實現WebSphere Application Server的UserRegistry Java介面,只要實現了這個java介面,定製注冊表可以支持任意類型的數據源,比如最常見的關系型資料庫,文件系統等等。
用戶安全名字(User Security Name):用於驗證的用戶名字,就如本地操作系統驗證方式的用戶名。
用戶唯一ID(User Unique ID):每個用戶對應的唯一ID。
用戶顯示名字(User Display Name):可選項,用於顯示該用戶的名字,比如在歡迎界面,相當於本地操作系統驗證方式下的該用戶的全名。
組安全名字(Group Security Name):用於驗證的組的名字,就如本地操作系統的用戶。
組唯一ID(Group Unique ID):每個組對應的唯一ID。
組顯示名字(Group Display ID):可選項,用於顯示該組的名字,比如在歡迎界面,相當於本地操作系統驗證方式下的該組的全名。
UserRegistry介面的下列方法必須實現:
initialize:讀取WPS中配置的連接信息,對變數進行初始化
checkPassword:此方法用來驗證用戶名以及密碼是否合法,是整合用戶資料庫的關鍵
mapCertificate:mapCertificate方法從瀏覽器中X.509安全證書鏈映射成為用戶名
getRealm:返回注冊表所在域,比如在OS/400或是AIX上,應該返回系統的主機名,其他情況可以返回默認值"customRealm"。
getUsers:根據輸入的用戶pattern(樣式)查找符合條件的用戶列表,如A*,則返回所有A開頭的用戶,開發人員可以根據自己的要求來開發。返回的用戶數如果過多,可以使用limit參數進行限制
getUserDisplayName:根據安全用戶名(Security User Name),得到顯示用戶名(Display User Name),一般情況返回同樣的名字即可。
getUniqueUserId:根據安全用戶名,得到該用戶的唯一ID。
getUserSecurityName:根據用戶的唯一ID得到用戶的安全用戶名。
isValidUser:檢查用戶名是否合法。
getGroups:根據pattern(樣式)查找符合條件的組列表,用法同getUsers。
getGroupDisplayName:根據組的安全名字,得到組的顯示名字。
getUniqueGroupId:根據組的安全名字,得到組的唯一ID。
getUniqueGroupIds:得到包含某個用戶的所有組唯一ID列表。
getGroupSecurityName:根據組的唯一ID得到組的安全名字。
isValidGroup:檢查用戶組是否合法。
getGroupsForUser:得到包含某個用戶的所有組的安全名字列表。
getUsersForGroup :得到某個組的所有用戶列表。
createCredential:在底層的WAS實現中,這個方法不會被call到,返回null即可
『肆』 websphere怎麼配置多個資料庫
登錄was控制台,選擇「資源」->"JDBC提供程序"->選擇"應用伺服器"->"新建"
2
選擇「資料庫類型」->選擇「提供程序類型」->選擇」實施類型「
3
輸入」資料庫類路徑信息「,/home/jar是指存放驅動程序jar的目錄,後面不要加上jar包的名稱。,後續操作直接「下一步」-「完成」。
4
選擇」JDBC-數據源「->"新建"
」輸入基本數據源信息「,選擇」創建新建J2C認證別名「
選擇」新建「
輸入相關信息,別名可以任意輸入,「用戶標識」和「密碼」是指連接資料庫用的用戶名和密碼。
一定要選擇「保存」,設置才能生效。
輸入基本數據源信息,JNDI名稱要記住,在配置應用里資料庫連接的時候會用到它。
創建數據源,選擇」Oracle驅動程序「
URL中每個冒號前後不能有空格,URL中的IP地址是資料庫伺服器的IP,
緊跟著IP的是埠號,oracle默認的是1521,之後是SID,oracle默認是orcl。
直接單擊」完成「
一定要選擇「保存」,設置才能生效。
選擇剛剛新建的數據源,單擊」測試鏈接「
15
測試通過說明配置正確,否則配置錯誤。