【发布时间】:2012-01-31 15:22:50
【问题描述】:
我玩 Java 和 mysql 已经有一段时间了。但我第一次将它与 Tomcat 一起使用。命令是否相同,因为据我所知,它的命令不起作用。
到目前为止,我已经将它连接起来,我知道这是因为它使我的 mysql 连接最大化,所以我必须关闭 Tomcat。
这是我的连接代码和drop table实验:
public void connect() throws SQLException, NamingException{
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource) envCtx.lookup("jdbc/TestDB");
con = ds.getConnection();
dropTables("DROP TABLE test;");
con.close();
}
public void dropTables(String query) throws SQLException{
Statement st = (Statement)con.createStatement();
st.executeUpdate(query);
}
一旦我取消注释 dropTables,我就会得到 HTTP 500。
有什么想法吗?
TIA
这是错误:
SEVERE: Servlet.service() for servlet myServlet threw exception
java.lang.ClassCastException: org.apache.tomcat.dbcp.dbcp.DelegatingStatement cannot be cast to com.mysql.jdbc.Statement
at myServlet.dropTables(myServlet.java:90)
at myServlet.connect(myServlet.java:82)
at myServlet.doPost(myServlet.java:50)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:470)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.ajp.AjpAprProcessor.process(AjpAprProcessor.java:431)
at org.apache.coyote.ajp.AjpAprProtocol$AjpConnectionHandler.process(AjpAprProtocol.java:384)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1665)
at java.lang.Thread.run(Thread.java:662)
【问题讨论】:
-
HTTP 500 是内部服务器错误,这可能意味着存在未处理的异常。你有堆栈跟踪吗?
-
它是否向您显示任何异常或其他更详细的错误信息? Tomcat 服务器日志说明了什么?
-
我猜 NullPointerException 或 SQLException 正在关闭您的容器。检查您的 catalina.out 以获取证据。
-
您的查询抛出异常,您应该在更高级别捕获它并记录它。然后在此处发布错误,以便我们可以实际帮助您。
-
贴出stacktrace,或许能提供一些线索。