java - Jetty + Derby 未找到合适的司机

标签 java jetty derby

我正在 Eclipse 中使用 Jetty + Derby。我收到此错误:

javax.servlet.jsp.JspException: Unable to get connection, DataSource invalid: "java.sql.SQLException: No suitable driver found for jdbc:derby://localhost:1527/airlinesDB;user=slc;password=slc;"
at org.apache.taglibs.standard.tag.common.sql.QueryTagSupport.getConnection(QueryTagSupport.java:314)
at org.apache.taglibs.standard.tag.common.sql.QueryTagSupport.doStartTag(QueryTagSupport.java:197)
at org.apache.jsp.Welcome_jsp._jspx_meth_sql_query_0(Welcome_jsp.java:433)
at org.apache.jsp.Welcome_jsp._jspService(Welcome_jsp.java:108)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:111)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:403)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:492)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:378)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:558)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:489)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:520)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:233)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:972)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:417)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:192)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:906)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:267)
at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:98)
at com.ibm.sample.LoginServlet.doPost(LoginServlet.java:61)

查看 LoginServlet.java 代码,第 61 行,它是:

getServletContext().getRequestDispatcher("/Welcome.jsp").forward(request, response);

自从我将整个项目从Tomcat服务器迁移到Jetty服务器后,该项目可以在Tomcat配置中成功运行。因此我确信 web.xml 中的 URL 是正确的。我认为这个问题可能是由于 Jetty 中的一些不正确的配置造成的。

我还以 WAR 格式导出了完整的项目,您可以通过以下方式访问它:

https://drive.google.com/file/d/0B1EhxQ7GBJdsYUlzZ1UtTkIxQTg/edit?usp=sharing

要运行此项目(或者您只想查看源文件),您可以在 Eclipse 中导入此项目。 java 源文件位于 com.ibm.sample 包下。另外,对于运行项目的软件先决条件,您应该在 Eclipse 中安装 Derby 和 Jetty 插件。

要运行它,您可以首先启动 Derby Network Server,然后启动 Jetty,然后打开此 url:

本地主机:8080/Test/Welcome.jsp

然后输入 slc/slc 作为用户名和密码进行登录。

如果您想运行它,以上是您需要执行的所有步骤。

非常感谢您的建议或帮助!!

最佳答案

该 url 需要在 derbyclient.jar 中找到客户端驱动程序 检查您是否可以在类路径上使用 derbyclient.jar 访问 ij 中完全相同的 url。如果可以,则意味着 Derby 客户端驱动程序可以识别该 url。那么唯一的其他解释是,当尝试获取连接时,您的 jetty 服务器在类路径上没有 derbyclient.jar。

由于我不知道如何配置jetty,所以我不知道错误可能出在哪里。但我会寻找列出 jar 的任何位置并确保包含 derbyclient.jar。

关于java - Jetty + Derby 未找到合适的司机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22600211/

相关文章:

jpa - 嵌入式 Glassfish JPA 数据源连接失败

java - 如何从 Java 程序中获取 Ofbiz 中的 DispatchContext

java - 二叉树的最低公共(public)祖先

java - 非干扰运算符(operator)不显示其内容

java - 通过whennew()的powermock模拟构造函数不适用于匿名类

maven-2 - Maven的jetty插件SSL配置问题

java - 在 Jetty servlet 中处理 uri 参数

java - Jetty 9.3.4 不支持集成测试

derby - 如何使用 SQLDeveloper 连接嵌入式 Derby 数据库

java - 如何运行 sql 脚本以便从 java 代码更新 Derby 架构?