使用JNDI查找JBOSS内配置好的数据源遇到的问题
转载自http://www.24xuexi.com/w/2011-06-03/91169.html
JBoss版本:Jboss-4.0.5.GA
MySql版本:Mysql-5.0.44
第一步,去MySQL的官网下一个JDBC驱动(点这里下载)然后把解压出来的文件mysql-connector-java-5.0.8-bin.jar拷贝到JBOSS_HOME/server/all/lib里。最好再把CLASSPATH里加上mysql-connector-java-5.0.8-bin.jar的路径。
第二步,拷贝JBOSS_HOME/docs/examples/jca/mysql-ds.xml到JBOSS_HOME/server/all/deploy文件夹里。然后修改一下几行:
????????<jndi-name>MySqlDS</jndi-name><!--这里填你想要JNDI名字-->
????????<connection-url>jdbc:mysql://localhost:3306/test</connection-url><!--这里我用mysql自带的数据库做测试-->
????????<driver-class>com.mysql.jdbc.Driver</driver-class>??????????????<!--这个不用改-->
????????<user-name>root</user-name>?????????????<!--这里填数据库的用户名-->
????????<password>123456</password>?????????<!--这里填数据库的密码-->
第三步,修改JBOSS_HOME/server/all/conf里的standardjbosscmp-jdbc.xml文件。这里和网上其他教程不一样的是只用修改<datasource>java:/MySqlDS</datasource>就可以了。注意这里的MySqlDS就是在第二步中mysql-ds.xml中配置的JNDI名字。那个<datasource-mapping>就不用改了。
第四步,修改JBOSS_HOME/server/all/conf里的login-config.xml文件。在文件的最后一句</policy>的前面加上一下代码:
????<!--MySQLData-SourceSettings-->
????<application-policyname="MySqlDbRealm">
????????????????<authentication>
????????????????<login-modulecode=
????????????????"org.jboss.resource.security.ConfiguredIdentityLoginModule"
????????????????flag="required">
????????????????<module-optionname="principal">MySqlDS</module-option>
????????????????<module-optionname="userName">root</module-option>
????????????????<module-optionname="password">123456</module-option>
????????????????<module-optionname="managedConnectionFactoryName">
????????????????jboss.jca:service=LocalTxCM,name=MySqlDS
????????????????</module-option>
????????????????</login-module>
????????????????</authentication>
????????</application-policy>
编一个名为index.jsp的JSP文件进行测试:
<%@pagelanguage="java"import="java.util.*"pageEncoding="GB2312"%>
<%@pageimport="java.sql.*"%>
<%@pageimport="javax.sql.DataSource"%>
<%@pageimport="javax.naming.*"%>
<html>
<head>???
????<title>测试JBoss/MySQL连接池</title>???
</head>
<body>
????<%
????out.print("测试JBoss/MySQL连接池<br/>");
????try{
????InitialContextinitCtx=newInitialContext();
????DataSourceds=(DataSource)initCtx.lookup("java:/MySqlDS");//注意这里,如果你的JNDI名字和我的不一样,那这个"MySqlDS"要改!
????Connectionconn=ds.getConnection();
????out.print("MySQLconnectionpoolrunsperfectly!");
????conn.close();
????}
????catch(Exceptionex){
????out.println("连接错误:");
????out.print(ex.getMessage());
????}
????%>
</body>
</html>
启动JBOSS:nohup./run.sh-call>nohup.out&
将此脚本放在JBOSS_HOME/server/all/deploy/ROOT.war下,然后通过WEB访问:http://localhost:8080,配置正确,如下显示:
测试JBoss/MySQL连接池
MySQLconnectionpoolrunsperfectly!