[英]Set Oracle 10g database connection timeout in Java
我嘗試使用以下代碼設置連接超時:
public class ConnectionTimeout {
public static void main(String[] args) throws Exception {
String entry = "jdbc:oracle:thin:@xxx:1521:xxx";
Connection con=null;
Class.forName("oracle.jdbc.driver.OracleDriver");
DriverManager.setLoginTimeout(1);
con=DriverManager.getConnection(entry,"username","password");
Statement s=con.createStatement();
s.execute("select 1 from dual");
s.close();
con.close();
}
}
實例xxx
不存在。 但是我得到以下異常:
Exception in thread "main" java.sql.SQLException: E/A-Exception: Socket is not connected
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:255)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:439)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at my.package.connection.timeout.ConnectionTimeout.main(ConnectionTimeout.java:22)
如何對不存在或不可用的Oracle數據庫實例實施超時?
編輯:如果我設置了DriverManager.setLoginTimeout(30);
到30秒,異常發生的速度和以前一樣快!
您的DriverManager.setLoginTimeout(1);
設置驅動程序在連接數據庫時等待的最長時間(以秒為單位) 。 在您的情況下,它設置為1。
要沒有限制,請設置setLoginTimeout(0)
,其中0
表示沒有限制。
我希望這有幫助。
如果您的實例xxx
不存在,請更新 ,您如何期望Oracle驅動程序連接到數據庫? 設置沒有連接的“主機”的loginTimeout
多長時間不會有任何區別。
因為在Java doc中,它顯示:超時(以秒為單位),但是在JDBC Oracle的實現中,以毫秒為單位。
您可以嘗試使用毫秒為單位。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.