OS:linux centoS
Jdk:5
JbossAS:4.2.2GA
-
local-tx-datasource:
最常用的數據源配置,該連接池的連接管理器是LocalTxConnectionManager,只支持本地事務,不適合做分佈式事務。
以mssql爲例如下:
如果密碼按明文配置應該是:
這種配置當然能完成數據源的配置,但是數據庫的密碼直接 暴露給了系統的操作員、維護人員,增加了數據庫不安全的因素。
但是不用擔心,jboss本身提供了對密碼進行加密的工具org.jboss.resource.security.SecureIdentityLoginModule
操作方法:進入JBOSS_HOME 然後按classpath 執行這個加密工具就ok了
1、cd /usr/local/Jboss-4.2.2GA
2、java -cp lib/jboss-common.jar:lib/jboss-jmx.jar:server/default/lib/jbosssx.jar:server/default/lib/jboss-jca.jar org.jboss.resource.security.SecureIdentityLoginModule password
得出的加密串爲一個16進制數據:5dfc52b51bd35553df8592078de921bc
到這裏你可能問該怎麼操作才能讓jboss識別這個加密後的密碼呢??
我們把local-tx-datasource中的用戶名和密碼兩個節點幹掉,加上一個安全域<security-domain>EncryptDBPassword</security-domain>
,這個域載有用戶名、密碼、數據源的JNDI。
配置後ms-ds.xml文件就變成了現在的樣子:
然後在 修改JBOSS的安全登錄配置文件JBOSS_HOME/server/default/conf/login-config.xml
加上一段如下配置
注意managedConnectionFactoryName的配置service一定是LocalTxCM否則JBOSS連接池類廠不能找到對應的連接管理器因爲我們上面配置的數據源是本地數據源local-tx-datasource,這個對應關係要一致,否則jboss會報錯。其他的對應關係不用我多說了應該都能看懂
,這樣一個帶有密文密碼的數據源配置就OK了。
-
no-tx-datasource
非事務連接池配置,連接管理器:NoTxConnectionManager不支持事務
以oracle-ds.xml爲例
配置好了應該是
同樣在login-config中增加一段安全密碼登陸的安全域
注意manegedConnectionFactoryName的service屬性的變化,不再贅言。
然後重啓JBOSS server ,debug之。。 沒問題! 就這樣平民級的jboss連接池配置大功告成了。
參考鏈接 http://www.jboss.org/community/wiki/EncryptingDataSourcePasswords
有興趣的同學可以一起深入探討下。