sql无法调试Java中的“连接到数据库失败”异常
我在调试一个java异常时遇到了一个真正的问题。 该应用程序非常古老,是在一个未知(不是任何熟悉的框架)定制框架中编写的,我没有访问框架库的源代码,只有我拥有的类。我可以访问应用程序源代码,有时(不经常)会出现“连接到数据库失败”错误。我已经确定了代码块和方法,它们实际上连接到数据库,然后运行更新查询。 我认为这可能是SQL异常,所以尝试捕获它。。但它不是SQL异常,因为该异常仅由异常捕获块捕获。我没有从异常的堆栈跟踪中得到任何清晰的概念。下面是示例代码。你能帮我找出这个问题吗
public void method_insert() throws Exception{
boolean connected = false;
**
**
db.setAutoCommit(false);
**
try {
connected = db.connect("jdbc/dbconnect");
}catch(SQLException e){
System.out.println("Error has occured in Connecting the database");
e.printStackTrace();
}
try{
String unqKey = "SELECT "+Constantes.ORA_SEQUENCES.get(..)+".NEXTVAL FROM DUAL";
ResultSet rs = db.query(unqKey);
if(rs.next()){
curr_uk = rs.getInt(1);
this.var1 = curr_uk;
}
} catch (SQLException e) {
System.out.println("-------- An error occured in generating key from sequence ------");
e.printStackTrace();
}
String query = ** actual insert query**
item_Insert = db.prepareStatement(query);
try{
db.setAutoCommit(false);
try{
**
**
db.update(item_Insert);
db.commit();
System.out.println("table has been successfully updated....");
}catch (SQLException e) {
db.rollback();
System.out.println("table updation failed. Rolling back");
e.printStackTrace();
} finally {
item_Insert.close();
}
}catch(SQLException e){
System.out.println("SQL Errored occoured in transaction.");
e.printStackTrace();
}catch (Exception e) { // Here the Exception is getting caught. Below i have provided some log info also.
System.out.println("Errored occoured in transaction.");
e.printStackTrace();
} finally {
try {
if(item_Insert != null)
item_Insert.close();
}catch (SQLException e1) {
System.out.println("Some error has occured while closing item_Insert statement for method.");
e1.printStackTrace();
}
try {
db.disconnect();
} catch (SQLException e) {
System.out.println("Some error has occured while disconnecting db connection for method.");
e.printStackTrace();
}
}
}
StackTrace in Log:
Errored occoured in transaction.
.....: java.lang.Exception: Failed to connect to database /
at ...method(file.java:1009)
....
....
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at ...doFilter(SessionFilter.java:65)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:204)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.valves.FastCommonAccessLogValve.invoke(FastCommonAccessLogValve.java:481)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:526)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:307)
at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:385)
at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:748)
at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:678)
at org.apache.jk.common.SocketConnection.runIt(ChannelSocket.java:871)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)
请注意:我使用的是Java1.5和Tomcat5.5服务器
共 (0) 个答案