Oracle JDBC連線BUG解決方案
阿新 • • 發佈:2020-11-02
前兩天接到一個工作,某網站無法訪問了,重啟後也一直掛在哪裡,起不來。
我剛開始懷疑是程式配置問題,後來發現,只要初始化Spring內容服務就起不來。看了一下spring配置檔案裡面配置了兩個資料來源,都是由tomcat管理的jndi資料來源。查看了一下發現有一個數據源有問題,使用小程式測試,發現無法連線該資料庫,同時也發現一個問題,程式一直掛在哪裡,是否能連線卻不再返回結果。
網上也有人遇到過這類問題,看來都沒有很好的解決方案,當然,我也沒有。
我現在只是說明一下問題,並復現一下場景。
你可以使用附件內除錯工具或自己下載一個TCP除錯工具,然後開啟一個埠,然後寫一個小程式把這個埠當成Oracle服務埠去訪問。
package com; import java.sql.Connection; import java.util.Properties; import oracle.jdbc.driver.OracleDriver; /** * 資料庫連線物件管理類 * @說明 * @author cuisuqiang * @version 1.0 * @since */ public class ConnectionManager { private static final String url = "jdbc:oracle:thin:@192.168.1.155:1521:orcl"; private static final String username = "scott"; private static final String userpass = "bi123"; public static void main(String[] args) throws Exception { Connection conn = getConnection("1"); if (null != conn) { System.out.println(conn.toString()); } else { System.out.println("NO LINK"); } } public static Connection getConnection(String tar) { Connection conn = null; try { OracleDriver driver = new OracleDriver(); Properties properties = new Properties(); properties.put("user",username); properties.put("password",userpass); conn = driver.connect(url,properties); } catch (Exception e) { e.printStackTrace(); } return conn; } }
看服務視窗:
可以看到,程式發來了登入資訊,但是我們不回覆,然後就會看到,程式死在了:
conn = driver.connect(url,properties);
獲得連線這裡!
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。