【问题标题】:Tomcat Netbeans DataSource invalid: "java.sql.SQLException: No suitable driver found for jdbcTomcat Netbeans 数据源无效:“java.sql.SQLException:找不到适合 jdbc 的驱动程序
【发布时间】:2023-03-18 05:45:02
【问题描述】:

我只是按照在 Netbeans 页面上使用 MySQL 数据库创建简单 Web 应用程序的做法,遇到了错误。

我无法使用 glassfish 运行我的初始步骤,因此安装了 tomcat,它对于更简单的版本运行良好。添加 MySQL 数据库后。如文档所述,我已经使用 Netbeans glassfish 功能定义了一个 JDBC 资源。但是我在 web.xml 和 glassfish-resources.xml 下引用了这些资源,我遇到了错误。

我认为我应该以不同于教程显示的任何方式来定义 tomcat 的 jdbc 源,但我是新手并且没有太多背景。

如果您能给我一些想法或参考文档,对于新手来说很容易理解,我将不胜感激。

这是日志文件。

TTP 状态 500 - 在第 9 行处理 JSP 页面 /index.jsp 时发生异常 类型异常报告 消息在第 9 行处理 JSP 页面 /index.jsp 时发生异常 描述服务器遇到了一个内部错误,导致它无法完成这个请求。

异常 org.apache.jasper.JasperException:在第 9 行处理 JSP 页面 /index.jsp 时发生异常
6:作者:XXX
7:--%>
8:
9:
10: SELECT subject_id, name FROM subject
11:
12:

堆栈跟踪:

org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:455)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

根本原因

javax.servlet.ServletException: javax.servlet.jsp.JspException: Unable to get connection, DataSource invalid: "java.sql.SQLException: No suitable driver found for jdbc/IFPNEW"
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:906)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:835)
org.apache.jsp.index_jsp._jspService(index_jsp.java:153)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

根本原因

javax.servlet.jsp.JspException: Unable to get connection, DataSource invalid: "java.sql.SQLException: No suitable driver found for jdbc/IFPNEW"
org.apache.taglibs.standard.tag.common.sql.QueryTagSupport.getConnection(QueryTagSupport.java:318)
org.apache.taglibs.standard.tag.common.sql.QueryTagSupport.doStartTag(QueryTagSupport.java:201)
org.apache.jsp.index_jsp._jspx_meth_sql_005fquery_005f0(index_jsp.java:175)
org.apache.jsp.index_jsp._jspService(index_jsp.java:89)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

context.xml

       <?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="/tompool">
  <!-- maxActive: Maximum number of database connections in pool. Make sure you
         configure your mysqld max_connections large enough to handle
         all of your db connections. Set to -1 for no limit.
         -->
  <!-- maxIdle: Maximum number of idle database connections to retain in pool.
         Set to -1 for no limit.  See also the DBCP documentation on this
         and the minEvictableIdleTimeMillis configuration parameter.
         -->
  <!-- maxWait: Maximum time to wait for a database connection to become available
         in ms, in this example 10 seconds. An Exception is thrown if
         this timeout is exceeded.  Set to -1 to wait indefinitely.
         -->
  <!-- username and password: MySQL username and password for database connections  -->
  <!-- driverClassName: Class name for the old mm.mysql JDBC driver is
         org.gjt.mm.mysql.Driver - we recommend using Connector/J though.
         Class name for the official MySQL Connector/J driver is com.mysql.jdbc.Driver.
         -->
  <!-- url: The JDBC connection url for connecting to your MySQL database.
         -->
  <Resource auth="Container" driverClassName="com.mysql.jdbc.Driver" maxActive="100" maxIdle="30" maxWait="10000" name="jdbc/IFPNEW" password="...." type="javax.sql.ConnectionPoolDataSource" url="jdbc:mysql://localhost:3306/connpool" username="....."/>
</Context>

【问题讨论】:

  • 您是否在类路径中包含mysql-connector-java-[version]-bin?应该放在tomcat/lib folder
  • 它位于 Apache Tomcat 8.0.15\bin 文件夹下,但我在阅读互联网上的帖子后下载了它。版本是5.1.6.jar 但是mysql 版本是5.7 而tomcat 版本是8.0.15 netbeans 版本是8 会不会是连接器的版本不对
  • 它应该放在lib文件夹中,而不是bin。可以在这里下载最新版本dev.mysql.com/downloads/connector/j将jar复制到lib文件夹后重启Tomcat。
  • 它也在 lib 文件夹中,但我用最新的连接器文件替换了它。错误是一样的。我确实相信它与我的 jdbc 资源有关,因为我是从 netbeans 创建它的,也许 Tomcat 没有考虑它。
  • 您可以发布 context.xml 吗?你是如何定义jdbc/IFPNEW 资源的?

标签: mysql jsp tomcat netbeans


【解决方案1】:

试试

type="javax.sql.DataSource"

代替

type="javax.sql.ConnectionPoolDataSource"

另请参阅此帖子:DataSource or ConnectionPoolDataSource for Application Server JDBC resources

【讨论】:

  • 实际上我在发帖之前已经这样做了,但我又从头开始确保但没有帮助。数据源无效:“java.sql.SQLException:无法创建 PoolableConnectionFactory(未知数据库 'connpool')”
  • 好的,实际上它在更正数据库名称后工作。感谢您的帮助 acdhirr
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-17
  • 2012-07-07
  • 2020-11-29
  • 1970-01-01
  • 2013-07-04
  • 2017-11-09
相关资源
最近更新 更多