Среда разработки NetBeans 6.7 RC1 (также пробовал 6.5)
jdk1.6.0_14
ОС winXP SP3
При подключении к оракловой базе через консольное приложение проблем не возникает. А при создании приложения с графическим интерфейсом, тот же класс зависает на подключении и где-то через минуту выдаёт эксепшен: java.sql.SQLException: Исключение ввода/вывода: The Network Adapter could not establish the connection
Всё стопорится на DriverManager.getConnection(this.dbURL, properties);
При этом на компах с 2003 сервером программа работает и с графическим интерфейсом
куда хотяб копать? Может, NetBeans настроить надо как-то по особенному?
Конструктор класса :
/**
* Конструктор получает логин, пароль, адрес базы данных
* @param login логин базы данных
* @param pass пароль базы данных
* @param dbURL адрес базы данных "@//путь:порт/инстенс"
* @param log указатель на лог файл
*/public DataBaseRW(String login, String pass, String dbURL, LAVFileWriter log) {
if (log != null) {
log.writeToFile("Подготовка данных для подключения к базе...");
}
this.setLogin(login);
this.setPass(pass);
//"jdbc:oracle:thin:@//sdsl-test:1521/sdsltest";this.setDbURL("jdbc:oracle:thin:" + dbURL);
this.log = log;
// инициализировать и загрузить драйвер JDBCtry {
Class.forName("oracle.jdbc.OracleDriver");
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
if (log != null) {
log.writeToFile(ex.getLocalizedMessage());
}
return;
}
try {
Properties properties = new Properties();
properties.setProperty("user", this.login);
properties.setProperty("password", this.pass);
if (log != null) {
log.writeToFile("Попытка подключиться к базе данных...");
}
this.conList = DriverManager.getConnection(this.dbURL, properties);
//*** На этом всё и останавливается ***this.stmtList = conList.createStatement();
if (log != null) {
log.writeToFile("Подключено успешно.");
}
} catch (SQLException ex) {
Logger.getLogger(DataBaseRW.class.getName()).log(Level.SEVERE, "Ошибка при подключении к базе данных", ex);
if (log != null) {
log.writeToFile("Ошибка при подключении к базе данных: " + ex.getLocalizedMessage() + " = " + ex);
}
this.close();
this.stmtList = null;
}
}
Здравствуйте, Александр, Вы писали:
А>java.sql.SQLException: Исключение ввода/вывода: The Network Adapter could not establish the connection
А>Всё стопорится на DriverManager.getConnection(this.dbURL, properties);
Коннекты не теряете (правильно ли закрываете все коннекции в случае любых исключений)? Возможно кол-во открытых потеряных коннекций превышает соответствующий лимит базы — соответственно она больше не даёт выделять новые?
Здравствуйте, KRA, Вы писали:
KRA>Здравствуйте, Александр, Вы писали:
А>>куда хотяб копать? Может, NetBeans настроить надо как-то по особенному?
KRA>Я бы для начала исколючил две возможных проблемы KRA>1. разные username/password/dburl при запуске гуи и негуи.
Они одинаковые.
KRA>2. блокирование javaw.exe файрволом.
Вообще отключил фаервол, тожесамое.
Re[3]: Подключение к оракловой базе из консольного и GUI при
Здравствуйте, Александр, Вы писали:
А>Здравствуйте, KRA, Вы писали:
KRA>>Здравствуйте, Александр, Вы писали:
А>>>куда хотяб копать? Может, NetBeans настроить надо как-то по особенному?
KRA>>Я бы для начала исколючил две возможных проблемы KRA>>1. разные username/password/dburl при запуске гуи и негуи.
А>Они одинаковые.
KRA>>2. блокирование javaw.exe файрволом.
А>Вообще отключил фаервол, тожесамое.
Тогда ставить tcp proxy между приложением и БД. Перенаправить jdbc url так, чтоб связь была через прокси и смотреть, идёт ли траффик с клиента, отвечает ли сервер, и по этому делать вывод кто виноват, клиент или сервер.
Re[3]: Подключение к оракловой базе из консольного и GUI при
Здравствуйте, Александр, Вы писали:
А>Здравствуйте, KRA, Вы писали:
KRA>>Здравствуйте, Александр, Вы писали:
А>>>куда хотяб копать? Может, NetBeans настроить надо как-то по особенному?
KRA>>Я бы для начала исколючил две возможных проблемы KRA>>1. разные username/password/dburl при запуске гуи и негуи.
А>Они одинаковые.
KRA>>2. блокирование javaw.exe файрволом.
А>Вообще отключил фаервол, тожесамое.
Если запускать приложение не из нетбинса, работает?
Re[2]: Подключение к оракловой базе из консольного и GUI при
Здравствуйте, PAS_Tor, Вы писали:
PAS>Здравствуйте, Александр, Вы писали:
А>>java.sql.SQLException: Исключение ввода/вывода: The Network Adapter could not establish the connection
А>>Всё стопорится на DriverManager.getConnection(this.dbURL, properties);
PAS>Коннекты не теряете (правильно ли закрываете все коннекции в случае любых исключений)?
При выходе везде юзаю метод:
public void close() {
try {
if (this.stmtList != null) {
this.stmtList.close();
}
if (this.stmtList != null) {
this.conList.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
+ На сервере по таймауту 5 минут до кика.
Re[4]: Подключение к оракловой базе из консольного и GUI при
1. По коду, который вы привели close() дергается только в случае SQLException, а в случае успешного выполнения или другого исключения нет. В данномм случае finally хороший тон.
2. В приведенном ниже коде копи-пастная опечатка?
А>При выходе везде юзаю метод:
А>
Здравствуйте, toxel, Вы писали:
T>Здравствуйте, Александр, Вы писали:
T>проверьте в tnsnames на каком хосте и порту база, T>сделайте tnsping sdsl-test — точно ли listener слушает подключения к БД
Всё работает.
TNS Ping Utility for 32-bit Windows: Version 9.2.0.1.0 - Production on 21-└┬├-20
09 08:35:46
Copyright (c) 1997 Oracle Corporation. All rights reserved.
╚ёяюы№чютрэ√ Їрщы√ ярЁрьхЄЁют:
E:\oracle\ora92\network\admin\sqlnet.ora
╚ёяюы№чютрэ рфряЄхЁ HOSTNAME фы ЁрчЁх°хэш яёхтфюэшьр
Attempting to contact (DESCRIPTION=(CONNECT_DATA=(SID=*)(SERVICE_NAME=sdsl-test)
)(ADDRESS=(PROTOCOL=TCP)(HOST=sdsl-test)(PORT=1521)))
OK (30 ьёхъ)
Проблема где-то в jave. Т.к. консольное приложение с базой работает без проблем. А построенное в визуальном редакторе нетбинсов не хочет...
Re: Подключение к оракловой базе из консольного и GUI прилож