在 JBoss 下配置 Oracle 数据源
1.将%JBOSS_HOME%\docs\examples\jca\oracle-ds.xml复制到%JBOSS_HOME%\server\default\deploy目录下。
2.打开oracle-ds.xml,做如下编辑:
修改jndi<jndi-name>OracleDS</jndi-name>
修改url<connection-url>jdbc:oracle:thin:@localhost:1521:orcl</connection-url>
修改驱动<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
修改用户名和密码<user-name>root</user-name><password>123456</password>
<?xmlversion=”1.0″encoding=”UTF-8″?>
<datasources>
<local-tx-datasource>
<jndi-name>OracleDS</jndi-name>//jndi名字
<use-java-context>false</use-java-context>
<connection-url>jdbc:oracle:thin:@localhost:1521:orcl</connection-url>//URL地址
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>//驱动
<user-name>root</user-name>//用户名
<password>123456</password>//密码
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter
</exception-sorter-class-name>
<metadata>
<type-mapping>Oracle9i</type-mapping>
</metadata>
<min-pool-size>10</min-pool-size>
<max-pool-size>30</max-pool-size>
<blocking-timeout-millis>60000</blocking-timeout-millis>
<idle-timeout-minutes>2</idle-timeout-minutes>
<new-connection-sql>SELECTCOUNT(*)FROMdual</new-connection-sql>
<check-valid-connection-sql>SELECTCOUNT(*)FROMdual</check-valid-connection-sql>
</local-tx-datasource>
</local-tx-datasource>
</datasources>
3.打开%JBOSS_HOME%\server\default\conf\standardjbosscmp-jdbc.xml并编辑:
<jbosscmp-jdbc>
<defaults>
<datasource>java:/DefaultDS</datasource>
……
</defaults>
……
</jbosscmp-jdbc>
4.打开%JBOSS_HOME%\server\default\conf\login-config.xml,将如下内容复制到文件最后:
<application-policyname=“OracleDbRealm”>
<authentication>
<login-modulecode=“org.jboss.resource.security.ConfiguredIdentityLoginModule”flag=“required”>
<module-optionname=“principal”>OracleDS</module-option>
<module-optionname=“userName”>root</module-option>
<module-optionname=“password”>123456</module-option>
<module-optionname=“managedConnectionFactoryName”>
jboss.jca:service=LocalTxCM,name=OracleDS
</module-option>
</login-module>
</authentication>
</application-policy>
5.将Oracle驱动程序复制到%JBOSS_HOME%\server\default\lib目录下。
以上的5步操作,完成了JBoss基本的数据源配置,但配置文件中有密码的明码,存在安全隐患。所以请使用如下的方法对密码进行加密的配置:
1.生成加密密码:
进入dos命令行模式
SetJBOSS_HOME环境变量
执行如下命令:
java-cp%JBOSS_HOME%\lib\jboss-jmx.jar;%JBOSS_HOME%\lib\jboss-common.jar;%JBOSS_HOME%\server\default\lib\jboss-jca.jar;%JBOSS_HOME%\server\default\lib\jbosssx.jarorg.jboss.resource.security.SecureIdentityLoginModule123456
生成123456的加密密码为:64c5fd2979a86168
2.修改%JBOSS_HOME%\server\default\deploy\oracle-ds.xml文件:
<?xmlversion=”1.0″encoding=”UTF-8″?>
<datasources>
<local-tx-datasource>
<jndi-name>OracleDS</jndi-name>
<use-java-context>false</use-java-context>
<connection-url>jdbc:oracle:thin:@localhost:1521:orcl</connection-url>
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
<security-domain>EncryptDBPassword</security-domain>//这里不用写上你的用户名与密码了,我们可以在login-config.xml里做点手脚,就OK了
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name>
<metadata>
<type-mapping>Oracle9i</type-mapping>
</metadata>
<min-pool-size>10</min-pool-size>
<max-pool-size>30</max-pool-size>
<blocking-timeout-millis>60000</blocking-timeout-millis>
<idle-timeout-minutes>2</idle-timeout-minutes>
<new-connection-sql>SELECTCOUNT(*)FROMdual</new-connection-sql>
<check-valid-connection-sql>SELECTCOUNT(*)FROMdual</check-valid-connection-sql>
</local-tx-datasource>
</local-tx-datasource>
</datasources>
3.打开%JBOSS_HOME%\server\default\conf\login-config.xml文件,加上下面这一段配置文件:
<application-policyname=”EncryptDBPassword”>//这里的name应该是你在配置数据源时写的security-domain里的字符串
<authentication>
<login-modulecode=”org.jboss.resource.security.SecureIdentityLoginModule”
flag=”required”>
<module-optionname=”username”>root</module-option>//数据库的用户名
<module-optionname=”password”>64c5fd2979a86168</module-option>//数据库的密码,不过是加密过的了
<module-optionname=”managedConnectionFactoryName”>
jboss.jca:service=LocalTxCM,name=OracleDS
</module-option>//注意name等于你的数据源的jndi-name,这里是OracleDS。
</login-module>
</authentication>
</application-policy>