Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Логические соединения, java.sql.SQLException: Закрытая команда 
:(
    Опции темы
neiron
Дата 17.7.2008, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 18.4.2006
Где: Краснодар

Репутация: нет
Всего: 4



Задача следующая - обновить БД по данным, приходящим через сокеты. 
Использую обычное io, т.е. потоки. 

Подключение к БД:
Код

            OracleConnectionPoolDataSource ods = new OracleConnectionPoolDataSource();

            ods.setDriverType("thin");       
            ods.setURL("jdbc:oracle:thin:@(DESCRIPTION = " +
                       "    (ADDRESS = (PROTOCOL = TCP)(HOST = ***.***.***.***)(PORT = 1521)) " +
                       "    (ADDRESS = (PROTOCOL = TCP)(HOST = ***.***.***.***)(PORT = 1521)) " +
                       "    (LOAD_BALANCE = yes) " +
                       "    (CONNECT_DATA = " +
                       "      (SERVER = DEDICATED) " +
                       "      (SERVICE_NAME = ********.*******.*****) " +
                       "    ))");
            ods.setUser("monitor");
            ods.setPassword("pass");

OraclePooledConnection opc = (OraclePooledConnection) ods.getPooledConnection();

При прослушке сокетов вызов:
Код

new Main(i, server.accept(), opc);



public Main(int num, Socket socket, OraclePooledConnection connection)
    {
        // копируем данные
        this._num = num;
        this._socet = socket;
        this._connection = connection;



В run() вызывается:
Код

oStorage.ParseAndStorage(_connection, data, numP, _num) 

//которая имеет вид

public boolean ParseAndStorage(OraclePooledConnection pool, String body, int NumP, int num) throws SQLException


В этой процедурке:
Код

// создаем логические соединения
            OracleConnection oc = (OracleConnection) pool.getConnection();



Всё работало. Работало в мультипотоке. Но сегодня стали выскакивать java.sql.SQLException: Закрытая команда

Проверяем:
Код

OracleConnection oc = (OracleConnection) pool.getConnection();
            if (oc.isClosed()) {
                System.out.println("preved medved!");
             }
            
            OracleConnection oc2 = (OracleConnection) pool.getConnection();
            
            if (oc.isClosed()) {
                System.out.println("preved medved!");
             }


В итоге при первом логическом подключении медведа нет, при создании второго подключения появляется медвед. Вопрос: откуда он пришёл?  Получается, что открытие второго логического подключения убивает первое.
Быть может какие параметры вводить надо? 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0387 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.