使用JNDI查找JBOSS内配置好的数据源遇到的问题

suixinsuoyu 2012-11-23

转载自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!

相关推荐

doctorvian / 0评论 2017-12-06