Apache taglib无法在glassfish中找到mysql驱动程序

时间:2016-06-16 02:46:50

标签: java mysql glassfish taglib

我在本教程中学习JAVA EE 7.0:

https://netbeans.org/kb/docs/javaee/ecommerce/connect-db.html

直到我来到这一部分一切顺利:

  1. 在浏览器中检查testDataSource.jsp。您会看到一个HTML表,其中列出了类别和产品表中包含的数据。
  2. 代码已成功生成。但它一直说不能找到mysql jdbc驱动程序:

    HTTP状态500 - 内部服务器错误

    输入例外报告

    messageInternal Server Error

    description服务器遇到内部错误,导致无法完成此请求。

    例外

    javax.servlet.ServletException:javax.servlet.jsp.JspException:无法获取连接,DataSource无效:" java.sql.SQLException:没有为jdbc / affablebean找到合适的驱动程序" 根本原因

    javax.servlet.jsp.JspException:无法获取连接,DataSource无效:" java.sql.SQLException:没有为jdbc / affablebean找到合适的驱动程序" note备注GlassFish Server Open Source Edition 4.1.1日志中提供了异常的完整堆栈跟踪及其根本原因。

    这是我在glassfish的日志中得到的:

    警告:ServletContext的上下文路径:/ FA-war与bundle的路径不同:FA-war 警告:StandardWrapperValve [jsp]:servlet jsp的Servlet.service()引发了异常 javax.servlet.jsp.JspException:无法获取连接,DataSource无效:" java.sql.SQLException:没有为jdbc / affablebean找到合适的驱动程序"     at org.apache.taglibs.standard.tag.common.sql.QueryTagSupport.getConnection(QueryTagSupport.java:318)     在org.apache.taglibs.standard.tag.common.sql.QueryTagSupport.doStartTag(QueryTagSupport.java:201)     at org.apache.jsp.test.testDataSource_jsp._jspx_meth_sql_query_0(testDataSource_jsp.java:120)     在org.apache.jsp.test.testDataSource_jsp._jspService(testDataSource_jsp.java:75)     在org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:111)     在javax.servlet.http.HttpServlet.service(HttpServlet.java:790)     在org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:411)     at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:473)     在org.apache.jasper.servlet.JspServlet.service(JspServlet.java:377)     在javax.servlet.http.HttpServlet.service(HttpServlet.java:790)     在org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)     在org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318)     在org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve。

    我尝试将mysql驱动程序放到GLASSFISH的lib目录和WEB-INF / lib中,但都没有用。

    但是当我尝试在glassfish中ping这个数据源时,它可以成功ping通。所以这意味着实际上glassfish应该拥有访问mysql所需的一切。

    那么问题是什么?我正在做教程讲述的所有内容,除了我使用的是glassfish 4.1.1& netbeans 8.1。

    提前致谢。

1 个答案:

答案 0 :(得分:0)

我已经弄明白了。看起来这个例外真的可能意味着很多完全不同的情况。

我的情况是:一旦我在glassfish-resources.xml中定义资源(可能名称不正确),它就不会真正出现在glassfish的管理控制台的JDBC条目中。

Glassfish认为它是一个应用程序范围的资源。它被命名为:

FA ----------- java:app / AffableConnPool JDBC连接池 FA ----------- java:app / jdbc / affablebean

看!你看到JNDI被操纵了。我在我的sqlquery taglib中尝试了java:app / jdbc / affablebean,但也无法正常工作。但我设法通过在glassfish中手动定义连接池来解决问题。

如果你遇到同样的问题,试试吧,我的朋友。永远不要陷入类路径问题,例外是厌恶错误。