本教程参考了网上的一些相关资料,并针对Jboss5.0.1 GA版本进行了相应的内容修改,数据库使用mysql。
1.将mysql的JDBC驱动放到的JBOSS_HOME\server\default\lib 下
2.把JBOSS_HOME\docs\examples\jca\mysql-ds.xml 复制到JBOSS_HOME\server\default\deploy目录下。修改mysql- ds.xml文件
例:
<datasources>
<local-tx-datasource>
<jndi-name>MySqlDS </jndi-name>
<connection-url>
jdbc:mysql://localhost :3306/databaseName ?characterEncoding=UTF-8
</connection-url>
<driver-class>com.mysql.jdbc.Driver </driver-class>
<user-name>root </user-name>
<password>root </password>
</local-tx-datasource>
</datasources>
此步骤需要注意的地方是jca目录下存在mssql-ds.xml这个文件,注意区分它与mysql-ds.xml
3.修改JBOSS_HOME\server\default\conf\standardjbosscmp-jdbc.xml
<jbosscmp-jdbc>
<defaults>
<datasource>java:/MySqlDS </datasource>
<datasource-mapping>mySql </datasource-mapping>
</defaults> </jbosscmp-jdbc>
说明:<datasource-mapping>mySql</datasource-mapping>的JBoss 5.0.1GA中是被注释掉了,需要将注释标记去掉
4.最后再修改JBOSS_HOME\server\default\conf\login-config.xml:
将下面代码添加到<policy>中
<application-policy name = "MySqlDbRealm">
<authentication>
<login-module code = "org.jboss.resource.security.ConfiguredIdentityLoginModule" flag = "required">
<module-option name ="principal">databaseName </module-option>
<module-option name ="userName">root </module-option>
<module-option name ="password">root </module-option>
<module-option name="managedConnectionFactoryName"> jboss.jca:service=LocalTxCM,name=MySqlDS
</module-option>
</login-module>
</authentication>
</application-policy>
如果你是按照上面的步骤一步不拉地走下来的话,那么祝贺你已经成功配置好了JBoss数据库连接池,接下来做一个简单的测试,测试代码如下:
try {
Context ctx = new InitialContext(); //得到初始化上下文
Object obj = ctx.lookup("java:/MySqlDS");//查找连接池
DataSource ds = (DataSource) obj;//转换成DataSource
Connection connect = ds.getConnection();//从连接池中得到一个连接
Statement stmt = connect.createStatement();
ResultSet rs = stmt.executeQuery("select * from tableName ");//这是你的数据库的表噢!
while(rs.next()){
out.println(rs.getXXX(1));//取出一个字段
}
rs.close();
stmt.close();
connect.close();
} catch (NamingException e) {
e.printStackTrace();
} catch(SQLException e1){
e1.printStackTrace();
}
out.flush();
out.close();