简体   繁体   English

无法为连接URL'null'创建类''的JDBC驱动程序:Tomcat + MySQL + Spring MVC

[英]Cannot create JDBC driver of class '' for connect URL 'null' : Tomcat + MySQL + Spring MVC

For this question I found lot of given answers but unfortunately nothing worked for me. 对于这个问题,我找到了很多给定的答案,但不幸的是,没有任何结果适合我。 That's why I am posting the question. 这就是为什么我要发布问题。 Your help would be highly appreciated. 您的帮助将不胜感激。

My Server.xml in Tomcat under apache-tomcat-7.0.69\\conf is as follows: 我在Tomcat中的apache-tomcat-7.0.69\\conf下的Server.xml如下:

<Resource name="jdbc/spring_hibernateDB"
  global="jdbc/spring_hibernateDB"
  factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
  auth="Container"
  type="javax.sql.DataSource"
  driverClassName="com.mysql.jdbc.Driver"
  url="jdbc:mysql://localhost:3306/spring_hibernate"
  username="test"
  password="password"
  maxActive="100"
  maxIdle="20"
  minIdle="5"
  maxWait="10000"
  />

My context.xml under apache-tomcat-7.0.69\\conf is as follows: 我在apache-tomcat-7.0.69\\conf下的context.xml如下:

<ResourceLink name="jdbc/mySpring_hibernateDB"
    global="jdbc/spring_hibernateDB"
    auth="Container"
    type="javax.sql.DataSource"/>

My web.xml is as follows: 我的web.xml如下:

<resource-ref>
    <res-ref-name>jdbc/mySpring_hibernateDB</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
</resource-ref>

My Spring-servlet.xml is as follows: 我的Spring-servlet.xml如下:

<bean id="jndiDSource" class="org.springframework.jndi.JndiObjectFactoryBean" autowire="byName">
    <property name="jndiName" value="java:comp/env/jdbc/mySpring_hibernateDB" />
</bean>

<bean id="mysessionFactory"
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean" p:dataSource-ref="jndiDSource" p:mappingResources="employee.hbm.xml">

    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
            <prop key="hibernate.hbm2ddl.auto">update</prop>
            <prop key="hibernate.show_sql">true</prop>
        </props>
    </property>
</bean>

And I have included mysql jar at bot in tomcat/lib and in eclipse webapp/lib forlder. 而且我在tomcat/lib和eclipse webapp/lib forlder中的bot中包含了mysql jar。 when I am running the application I am getting the below error. 当我运行应用程序时,出现以下错误。

HTTP Status 500 - Request processing failed; nested exception is org.springframework.jdbc.UncategorizedSQLException: Hibernate operation: Cannot open connection; uncategorized SQLException for SQL [???]; SQL state [null]; error code [0]; Cannot create JDBC driver of class '' for connect URL 'null'; nested exception is org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'

--------------------------------------------------------------------------------

type Exception report

message Request processing failed; nested exception is org.springframework.jdbc.UncategorizedSQLException: Hibernate operation: Cannot open connection; uncategorized SQLException for SQL [???]; SQL state [null]; error code [0]; Cannot create JDBC driver of class '' for connect URL 'null'; nested exception is org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'

description The server encountered an internal error that prevented it from fulfilling this request.

exception 

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.jdbc.UncategorizedSQLException: Hibernate operation: Cannot open connection; uncategorized SQLException for SQL [???]; SQL state [null]; error code [0]; Cannot create JDBC driver of class '' for connect URL 'null'; nested exception is org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:965)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:844)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:829)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)


root cause 

org.springframework.jdbc.UncategorizedSQLException: Hibernate operation: Cannot open connection; uncategorized SQLException for SQL [???]; SQL state [null]; error code [0]; Cannot create JDBC driver of class '' for connect URL 'null'; nested exception is org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
    org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:83)
    org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
    org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
    org.springframework.orm.hibernate3.HibernateAccessor.convertJdbcAccessException(HibernateAccessor.java:424)
    org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:410)
    org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:412)
    org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:375)
    org.springframework.orm.hibernate3.HibernateTemplate.loadAll(HibernateTemplate.java:585)
    com.abdul.dao.EmployeeDAOImpl.fetchAll(EmployeeDAOImpl.java:38)
    com.abdul.service.EmployeeService.fetchAllEmps(EmployeeService.java:27)
    com.abdul.controller.EmployeeController.displayAllEmps(EmployeeController.java:54)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    java.lang.reflect.Method.invoke(Unknown Source)
    org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176)
    org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:440)
    org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:428)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:919)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:851)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:953)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:844)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:829)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)


root cause 

org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
    org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1452)
    org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1371)
    org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
    org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider.getConnection(LocalDataSourceConnectionProvider.java:83)
    org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446)
    org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167)
    org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:161)
    org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1573)
    org.hibernate.loader.Loader.doQuery(Loader.java:696)
    org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259)
    org.hibernate.loader.Loader.doList(Loader.java:2228)
    org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2125)
    org.hibernate.loader.Loader.list(Loader.java:2120)
    org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:118)
    org.hibernate.impl.SessionImpl.list(SessionImpl.java:1596)
    org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:306)
    org.springframework.orm.hibernate3.HibernateTemplate$5.doInHibernate(HibernateTemplate.java:591)
    org.springframework.orm.hibernate3.HibernateTemplate$5.doInHibernate(HibernateTemplate.java:585)
    org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:407)
    org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:375)
    org.springframework.orm.hibernate3.HibernateTemplate.loadAll(HibernateTemplate.java:585)
    com.abdul.dao.EmployeeDAOImpl.fetchAll(EmployeeDAOImpl.java:38)
    com.abdul.service.EmployeeService.fetchAllEmps(EmployeeService.java:27)
    com.abdul.controller.EmployeeController.displayAllEmps(EmployeeController.java:54)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    java.lang.reflect.Method.invoke(Unknown Source)
    org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176)
    org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:440)
    org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:428)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:919)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:851)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:953)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:844)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:829)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)


root cause 

java.lang.NullPointerException
    sun.jdbc.odbc.JdbcOdbcDriver.getProtocol(Unknown Source)
    sun.jdbc.odbc.JdbcOdbcDriver.knownURL(Unknown Source)
    sun.jdbc.odbc.JdbcOdbcDriver.acceptsURL(Unknown Source)
    java.sql.DriverManager.getDriver(Unknown Source)
    org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1437)
    org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1371)
    org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
    org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider.getConnection(LocalDataSourceConnectionProvider.java:83)
    org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446)
    org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167)
    org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:161)
    org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1573)
    org.hibernate.loader.Loader.doQuery(Loader.java:696)

Please help. 请帮忙。 Thanks in advance. 提前致谢。

It is complaining because there is no driver or URL defined for the JndiDS 抱怨是因为没有为JndiDS定义驱动程序或URL

You need to have the JndiDs like: 您需要具有以下JndiD:

 <bean id="dataSource" class="org.apache.tomcat.jdbc.pool.DataSource" destroy-method="close">
    <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <!-- Define MySQL DB Driver name and URL -->
    <property name="url" value="jdbc:mysql://localhost:3306/spring_hibernate" />
    <property name="username" value="..." />
    <property name="password" value="..." />
    <property name="initialSize" value="5" />
    <property name="maxActive" value="10" />
    <property name="maxIdle" value="5" />
    <property name="minIdle" value="2" />
 </bean>

 <bean class="org.springframework.jdbc.core.JdbcTemplate">
     <constructor-arg ref="dataSource" />
 </bean>

Check this example http://blog.zenika.com/2013/01/30/using-tomcat-jdbc-connection-pool-in-a-standalone-environment/ 检查此示例http://blog.zenika.com/2013/01/30/using-tomcat-jdbc-connection-pool-in-a-standalone-environment/

You can use only the JNDI name, but you have to update the Hibernate properties 您只能使用JNDI名称,但必须更新Hibernate属性

<hibernate-configuration>
    <session-factory>
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="hibernate.connection.datasource">java:comp/env/jdbc/spring_hibernateDB</property>
        <property name="hibernate.current_session_context_class">thread</property>

    </session-factory>
</hibernate-configuration>

Check http://www.journaldev.com/2905/hibernate-tomcat-jndi-datasource-example-tutorial 检查http://www.journaldev.com/2905/hibernate-tomcat-jndi-datasource-example-tutorial

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 带有mysql的Tomcat:“无法为连接URL&#39;null&#39;创建类”的JDBC驱动程序” - Tomcat with mysql : “ Cannot create JDBC driver of class '' for connect URL 'null' ” Tomcat 8 + MySQL + Spring + JPA-无法为连接URL&#39;null&#39;创建类&#39;&#39;的JDBC驱动程序 - Tomcat 8 + MySQL + Spring + JPA - Cannot create JDBC driver of class '' for connect URL 'null' Java Spring Tomcat8:无法为连接URL&#39;null&#39;创建类&#39;&#39;的JDBC驱动程序 - Java Spring Tomcat8: Cannot create JDBC driver of class '' for connect URL 'null' 在spring tomcat应用程序中无法为连接URL&#39;null创建类&#39;&#39;的JDBC驱动程序 - Getting Cannot create JDBC driver of class '' for connect URL 'null in spring tomcat application 无法为连接URL&#39;null&#39;创建类&#39;&#39;的JDBC驱动程序:Tomcat和SQL Server JDBC驱动程序 - Cannot create JDBC driver of class '' for connect URL 'null' : Tomcat & SQL Server JDBC driver 在tomcat 6中创建和使用数据源时,无法为连接URL&#39;null&#39;-:ERROR创建类&#39;&#39;的JDBC驱动程序 - Cannot create JDBC driver of class '' for connect URL 'null' -:ERROR while creating and using a Datasource in tomcat 6 Tomcat,Java和SQL Server 2008 R2:无法为连接URL&#39;&#39;创建类&#39;&#39;的JDBC驱动程序 - Tomcat, Java & SQL Server 2008 R2: Cannot create JDBC driver of class '' for connect URL 'null' Tomcat 9 / JNDI 数据源 - 无法为连接 URL &#39;null&#39; 创建类 &#39;&#39; 的 JDBC 驱动程序 - Tomcat 9 / JNDI DataSource - Cannot create JDBC driver of class '' for connect URL 'null' 无法一直为连接URL&#39;null创建类&#39;&#39;的JDBC驱动程序 - Cannot create JDBC driver of class '' for connect URL 'null all the time 无法为连接URL&#39;null&#39;Oracle创建类&#39;&#39;的JDBC驱动程序 - Cannot create JDBC driver of class '' for connect URL 'null' Oracle
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM