Tomcat,MySQL - >无法为连接URL''创建类''的JDBC驱动程序

时间:2016-03-26 07:44:59

标签: mysql tomcat jdbc driver tomcat8

我知道这看起来像是一个重复的问题,但已尝试过stackoverflow和其他论坛中的所有帖子,但无济于事。

Apache Tomcat 8.0.32 Amazon RDS运行MySQL 5.6 在EC2 Windows服务器上运行tomcat

我的web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
...
  <resource-ref>
    <description>datasource</description>
    <res-ref-name>jdbc/bbDataSource</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
    <res-sharing-scope>Shareable</res-sharing-scope>
  </resource-ref>
...
</web-app>

Context.xml位于我的应用程序的META-INF文件夹中:

<?xml version="1.0" encoding="UTF-8"?>
<Context path="/ch">
   <Resource name="jdbc/bbDataSource"
        auth="Container"
        type="javax.sql.DataSource"
        username="********"
        password="********"
        driverClassName="com.mysql.jdbc.Driver"
        url="jdbc:mysql://*url*:3306/x?zeroDateTimeBehavior=convertToNull"/>
 </Context>

在ServletContextListener中创建数据源

try {
        dataSource = (DataSource) new InitialContext().lookup("java:comp/env/jdbc/bbDataSource");
        mLogger.log(Level.CONFIG, "Startup - AppContextServletListener - contextInitialized - Created dataSource object: {0}", dataSource);
        sce.getServletContext().setAttribute("dataSource", dataSource);
}

启动期间没有问题。 访问dataSource tomcat时会抛出上述错误。 并且jar文件位于tomcat的lib文件夹中(我怀疑这是问题,因为我在同一个应用程序中也使用了hibernate,它能够毫无问题地访问数据库)。

另外我注意到以下内容:$ CATALINA_HOME / conf / Catalina / localhost没有'ch.xml' - &gt;尝试复制context.xml并重命名为'ch.xml',但无济于事。

server.xml - &gt;在主机节点下

 <Host name="localhost"  appBase="webapps"
        unpackWARs="true" autoDeploy="true">
        <Context path="/ch" docBase="ch"></Context>
        <Context path="/ch/asdasd" docBase="C:\\xasdasd\\asdasd">   </Context>

1 个答案:

答案 0 :(得分:0)

这解决了它:

在Server.xml中,在上下文中添加了Resource行 想知道为什么需要定义两次?有线索吗?

<?php 
    $username = "root"; 
    $password = ""; 
    $hostname = "localhost";
    $dbhandle = mysql_connect($hostname, $username, $password) or die("cannot connect to database");
    $selected = mysql_select_db("audit", $dbhandle); 
    $strQuery = "SELECT * FROM audit_process"; 

    $retval = mysql_query($strQuery, $dbhandle); 

    if (!$retval) { 
        die('Could not get data: ' . mysql_error()); 
    }
?>