eclipse mysql jndi_JNDI数据源局部配置(解决Cannot create JDBC driver of class '' for connect URL 'null')...

最开始,我是借鉴 孤傲苍狼的JNDI教程去做的,他讲得很详细,但是坏处也就是因为他讲的太详细。查了很多书,都是建议说不要用全局去配置JNDI,一是要修改tomcat的server.xml,容易破坏tomcat ,其次是那样吃力不讨好。我是建议用局部变量就好的。

1.步骤一:学习配置JNDI之前,介绍你一定要先掌握tomcat的配置虚拟目录(可以去看Tomcat中主目录配置与虚拟目录配置问题这样的文章,也可以去我的tomcat配置虚拟目录 -思维焦点网易博客找类似的链接)。学习了tomcat的配置虚拟目录后你就知道了为什么要在  tomcat安装目录\conf\Catalina\localhost   下创建.xml文件。

2.步骤二: 开始通过局部配置JNDI(这个教程也只讲局部配置)。

下面会附上代码,标注颜色的,你要根据自己的实际情况改一下。

3.步骤三:最后通过tomcat的startup.bat启动和用电脑的浏览器是可以看到成功连接数据源和驱动的,但是用eclipse启动tomcat就不能了,总是提示Cannot create JDBC driver of class '' for connect URL 'null'问题 ,后来找到了tomcat+mysql问题,找不到jdbc驱动? ,说是jdbc for mysql除了mysql-connector-java-3.1.8-bin.jar之外还要个aspectjrt.jar,一起放在WEB-INF\lib  里面,结果没问题,可以运行了。网上很多资料和书都没有提到这个,我也不知道什么原因需要copy aspectjrt.jar 这个东西,也可能时tomcat版本或是jdbc版本问题。如果还是不行的话,可以再尝试这种方法:Tomcat下使用Druid配置JNDI数据源

--------------------------------------------------------------我是可爱的分割线-----------------------------------------------------

继续详解步骤二,附上代码:

1.首先,新建一个Test_JNDI的工程,然后在mysql和sqlserver数据库中创建名为test的数据库(只测试这两种数据库)。然后,在工程里创建test_jndi.jsp,然后在这个jsp中贴上代码

1

2

3

4 pageEncoding="UTF-8"%>

5

6

7

8

9

JNDI数据源测试

10

11

12

13 Connection connMySQL = null;14 try{15 //1、初始化名称查找上下文

16 Context ctx = newInitialContext();17 //InitialContext ctx = new InitialContext();亦可18 //2、通过JNDI名称找到DataSource,对名称进行定位java:comp/env是必须加的,后面跟的是DataSource名

19 /*

20 DataSource名在web.xml文件中的mysqlDataSource进行了配置21 22 23 MySQL DB Connection24 mysqlDataSource25 javax.sql.DataSource26 Container27 28 */

29 DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/mysql");30 //3、通过DataSource取得一个连接

31 connMySQL =ds.getConnection();32 out.println("MySQL Connection pool connected !!");33 //4、操作数据库

34 } catch(NamingException e) {35 System.out.println(e.getMessage());36 } catch(SQLException e) {37 e.printStackTrace();38 } finally{39 //5、关闭数据库,关闭的时候是将连接放回到连接池之中

40 connMySQL.close();41 }42 %>

43

44


45

46 Connection connSQLServer = null;47 try{48 //1、初始化名称查找上下文

49 Context ctx = newInitialContext();50 //InitialContext ctx = new InitialContext();亦可51 //2、通过JNDI名称找到DataSource,对名称进行定位java:comp/env是必须加的,后面的是DataSource名

52 /*

53 DataSource名在web.xml文件中的sqlserverDataSource进行了配置54 55 56 SQLServer DB Connection57 sqlserverDataSource58 javax.sql.DataSource59 Container60 61 */

62 DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/sqlserver");63 //3、通过DataSource取得一个连接

64 connSQLServer =ds.getConnection();65 out.println("SQLServer Connection pool connected !!");66 //4、操作数据库

67 } catch(NamingException e) {68 System.out.println(e.getMessage());69 } catch(SQLException e) {70 e.printStackTrace();71 } finally{72 //5、关闭数据库,关闭的时候是将连接放回到连接池之中

73 connSQLServer.close();74 }75 %>

76

77

78

2.然后,在工程目录下的WebContent下的.xml文件中,

70152578489c740d41c5383dbb5044c5.png

添加如下代码:

1 <?xml version="1.0" encoding="UTF-8"?>

2

3 Test_JNDI

4

5 index.html

6 test_jndi.jsp

7 default.htm

8 default.jsp

9

10

11

12 MySQL DB Connection

13 jdbc/mysql

14 javax.sql.DataSource

15 Container

16

17

18

19 sqlserver DB Connection

20 jdbc/sqlserver

21 javax.sql.DataSource

22 Container

23

24

25

3.最后,也是最重要,最容易出错的,就是在tomcat安装目录\conf\Catalina\localhost   下创建 Test_JNDI.xml文件(文件名最好和项目名Test_JNDI一样,不一样的情况我还没实验过)

(1).可以先在Test_JNDI.xml文件中添加如下代码,然后在浏览器输入对于URL,验证是否能访问项目首页。

注意1:上面这段代码是不带标签体的标签,跟下面的代码是不一样的。具体是 和 .....这里是数据源信息这两个代码语法是有区别的,一个是有标签体的。

注意3:上面这段代码中的<?xml 前面不能有空格, 否则tomcat报错(不允许有匹配 "[xX][mM][lL]" 的处理指令目标)

(2).贴上完整代码:

1 <?xml version="1.0" encoding="UTF-8"?>

2

3

5 auth="Container"

6 type="javax.sql.DataSource"

7 maxActive="100"

8 maxIdle="30"

9 maxWait="10000"

10 username="root"

11 password="0821"

12 driverClassName="com.mysql.jdbc.Driver"

13 url="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8"/>

14

15

17 auth="Container"

18 type="javax.sql.DataSource"

19 maxActive="100"

20 maxIdle="30"

21 maxWait="10000"

22 username="sa"

23 password="0821"

24 driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"

25 url="jdbc:sqlserver://localhost:1433;DatabaseName=test"/>

26

注意:

用户名和密码设置成你自己电脑的数据库,test为数据库。

name="jdbc/sqlserver" ,名字在所有地方有要保持一致。

path="/Test_JNDI" 里的名字要设置成和跟这个.xml文件一样。

运行成功结果:

034068cff38ae6ee0435fca6f5db54ea.png

--------------------------------------------------------------我是可爱的分割线-----------------------------------------------------

温馨提示:copy代码后粘贴到eclipse如果存留行号,可以利用的eclipse的快捷键alt+shit+a 将行号批量选中删除。

原创不易,请注明转载

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值