【发布时间】: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资源的?