JBoss 作為強大的 J2EE 應用服務器,其數據源配置靈活但初學者易迷路。本文以 JBoss 4.x 為例,詳細演示如何在自定義配置集中添加多個數據源(默認 HSQLDB + 新增 MySQL),涵蓋 XML 文件結構、JNDI 綁定、連接池參數、安全域、依賴關係等核心要素。
JBoss 提供三套默認配置:all、default、minimal。啟動命令:${JBOSS_HOME}/bin/run.sh -c <config-name>
建議複製 default 為 example 進行實驗,保留原配置回滾。
<?xml version="1.0" encoding="UTF-8"?>
<datasources>
<local-tx-datasource>
<jndi-name>DefaultDS</jndi-name>
<connection-url>jdbc:hsqldb:${jboss.server.data.dir}/hypersonic/localDB</connection-url>
<driver-class>org.hsqldb.jdbcDriver</driver-class>
<user-name>sa</user-name>
<password></password>
<min-pool-size>5</min-pool-size>
<max-pool-size>20</max-pool-size>
<idle-timeout-minutes>0</idle-timeout-minutes>
<track-statements/>
<security-domain>HsqlDbRealm</security-domain>
<depends>jboss:service=Hypersonic,database=localDB</depends>
</local-tx-datasource>
<mbean code="org.jboss.jdbc.HypersonicDatabase" name="jboss:service=Hypersonic,database=localDB">
<attribute name="Database">localDB</attribute>
<attribute name="InProcessMode">true</attribute>
</mbean>
</datasources>
local-tx-datasource:本地事務數據源,含 JDBC 連接信息、連接池參數security-domain:引用 login-config.xml 中認證策略,分離憑證配置depends:聲明啟動依賴,確保 Hypersonic 服務先啟動mbean:管理內嵌數據庫生命週期<?xml version="1.0" encoding="UTF-8"?>
<datasources>
<local-tx-datasource>
<jndi-name>ExampleDS</jndi-name>
<connection-url>jdbc:mysql://localhost/example</connection-url>
<driver-class>org.gjt.mm.mysql.Driver</driver-class>
<user-name>exampleUser</user-name>
<password>examplePassword</password>
<min-pool-size>5</min-pool-size>
<max-pool-size>20</max-pool-size>
<idle-timeout-minutes>0</idle-timeout-minutes>
<track-statements/>
</local-tx-datasource>
</datasources>
depends:不依賴其他啟動服務security-domain:憑證直接內聯(生產建議改用安全域)server/example/deploy/,命名規範 *-ds.xml 自動識別通過 JNDI 查找:Context ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup("java:/ExampleDS");
security-domain + login-config.xml 分離憑證valid-connection-checker、exception-sorter 實現連接有效性檢測xa-datasource 配置