我用的tomcat版本是6.0
为了避免修改Tomcat中的配置文件,所以我在项目的META-INF文件下的新建了context.xml文件中的配置如下:
<Context >
<Resource
name="jdbc/TaskDB"
auth="Container"
type="javax.sql.DataSource"
username="dbconn"
password="DMLQdbconn"
driverClassName="com.mysql.jdbc.driver"
url="jdbc:mysql://192.168.11.166:63306/logdb_tvg"
maxActive="8"
maxIdle="4"
maxWait ="6000"
/>
</Context>
在项目中web.xml文件中的配置如下:
<resource-ref>
<res-ref-name>jdbc/TaskDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
程序中的调用如下:
Connection con = null;
try {
//JNDI资源命名服务的入口点
Context ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup("java:/comp/env/jdbc/TaskDB");
con = ds.getConnection();
} catch (NamingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
在项目中的lib下也加入了commons-collections-3.0.jar commons-dbcp.jar commons-pool-1.4.jar mysql-connector-java-5.1.13-bin.jar
可是就是会出现上面的这个错误,
哪位兄弟姐妹帮忙看一下吧
------最佳解决方案--------------------------------------------------------
driverClassName="com.mysql.jdbc.driver"
这个连接串写错了。。driver应该大写称Driver
------其他解决方案--------------------------------------------------------
驱动貌似没加载的样子
------其他解决方案--------------------------------------------------------
可是驱动已经放在lib包下了
------其他解决方案--------------------------------------------------------
DataSource ds = (DataSource) ctx.lookup("java:/comp/env/jdbc/TaskDB");
con = ds.getConnection();
调试查看这两个对象是否已经获得指定数据库连接
------其他解决方案--------------------------------------------------------
连接串问题已经解决了,但是还是报错啊
------其他解决方案--------------------------------------------------------
这两句语句没有执行到,我的估计是,可能确实是配置文件出了问题,容器在实例化的对象的时候,可能是这个时候,就报错了
------其他解决方案--------------------------------------------------------
放弃DataSource了,换了个proxool连接池
------其他解决方案--------------------------------------------------------