1. 程式人生 > 程式設計 >Oracle JDBC連線BUG解決方案

Oracle JDBC連線BUG解決方案

前兩天接到一個工作,某網站無法訪問了,重啟後也一直掛在哪裡,起不來。

我剛開始懷疑是程式配置問題,後來發現,只要初始化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;
	}
}

看服務視窗:

Oracle JDBC連線BUG解決方案

可以看到,程式發來了登入資訊,但是我們不回覆,然後就會看到,程式死在了:

conn = driver.connect(url,properties);

獲得連線這裡!

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。