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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Oracle Connection Pool 
:(
    Опции темы
RuslanY
Дата 2.6.2011, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



здравствуйте!я в этом деле совсем новый,поэтому не судите строго.
я создал Connection Pool,но что то я сделал не правильно.
Код

import java.sql.Connection;
import java.sql.SQLException;
import java.util.Locale;

import javax.sql.PooledConnection;

import exeptions.HRDBException;
import exeptions.HRException;

import oracle.jdbc.pool.OracleConnectionPoolDataSource;

public class ConnectionPool {
    private static PooledConnection pc;
    private static ConnectionPool instance = null;

    private ConnectionPool(String user, String password) throws HRException {
        OracleConnectionPoolDataSource ds;
        String url = "jdbc:oracle:thin:@localhost:1521:xe";
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
            Locale.setDefault(Locale.ENGLISH);
            ds = new OracleConnectionPoolDataSource();
            ds.setURL(url);
            ds.setUser(user);
            ds.setPassword(password);
            pc = ds.getPooledConnection();
        } catch (Exception e) {
            e.printStackTrace();
            throw new HRException("User or Password is wrong,or DB communication problem.");
        }

    }

    public static Connection getConnection(String user, String password)throws HRException {
        if (instance == null) {
            instance = new ConnectionPool(user, password);
        }
        try {
            return pc.getConnection();
        } catch (SQLException e) {
            e.printStackTrace();//TODO must be removed
            throw new HRDBException();
        }
    }
}


подскажите пожалуйста как реализовать этот Connection Pool.
PM MAIL   Вверх
RuslanY
Дата 2.6.2011, 23:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



я его переделал,теперь на много лучше,но все равно не уверен,что все правильно,хотя... первичное поверхностное тестирование прошел.
вот код,кто нибудь подскажите пожалуйста,правильно я его сделал или нет?
Код


import java.sql.Connection;
import java.sql.SQLException;
import java.util.Locale;

import oracle.jdbc.pool.OracleConnectionPoolDataSource;
import exeptions.HRDBException;
import exeptions.HRException;

public class ConnectionPool {
    private static ConnectionPool instance = null;
    private static OracleConnectionPoolDataSource ds=null;

    private ConnectionPool() throws HRException {
        
        String url = "jdbc:oracle:thin:@localhost:1521:xe";
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
            Locale.setDefault(Locale.ENGLISH);
            ds = new OracleConnectionPoolDataSource();
            ds.setURL(url);
        } catch (Exception e) {
            e.printStackTrace();
            throw new HRDBException();
        }

    }

    public static Connection getConnection(String user, String password)throws HRException {
        if (instance == null) {
            instance = new ConnectionPool();
        }
        try {
            return ds.getConnection(user, password);
        } catch (SQLException e) {
            e.printStackTrace();//TODO must be removed
            throw new HRException("User or Password is incorrect");
        }
    }
}


PM MAIL   Вверх
carper
Дата 6.6.2011, 09:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

Репутация: 2
Всего: 8



Цитата(RuslanY @  2.6.2011,  23:50 Найти цитируемый пост)
но все равно не уверен,что все правильно,


Честно говоря, лень разбираться с пулом как таковым, но можно сразу сказать, что:
1. Вот тут лежит пример :
http://www.rgagnon.com/javadetails/java-0545.html

Обратите внимание на задействование кэша ( у вас этого нет вообще), а то потом будете задавать вопросы о том, почему так много соединений.
И на наличие других полезных методов.

2. Ваш код не будет нормально работать в многопоточном приложении, из-за отсутствия синхронизации.

3. Передача пароля как строки настоятельно не рекомендуется.
PM MAIL   Вверх
RuslanY
Дата 7.6.2011, 02:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата

Передача пароля как строки настоятельно не рекомендуется.

А как же тогда его передавать?

спасибо за ответ. замечание по поводу кеша очень кстати,сейчас буду исправлять.

Это сообщение отредактировал(а) RuslanY - 7.6.2011, 04:37
PM MAIL   Вверх
carper
Дата 7.6.2011, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

Репутация: 2
Всего: 8



Цитата(RuslanY @  7.6.2011,  02:03 Найти цитируемый пост)
А как же тогда его передавать?


Обычно как char[].
char[] are mutable (Strings are immutable) so we can clear the passwords after the usage.

Впрочем, все зависит от того, как и где вы будете использовать свой метод.
Вполне вероятно, что в вашем конкретном случае String вполне оправданное решение, так что я слегка погорячился. smile

Я вообще для Oracle подумал бы о proxy authentication, что позволит при утечке пароля конечного пользователя не дать злоумышленнику соединиться с базой минуя ваше приложение.



PM MAIL   Вверх
RuslanY
Дата 8.6.2011, 00:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(carper @  7.6.2011,  09:00 Найти цитируемый пост)
Я вообще для Oracle подумал бы о proxy authentication, что позволит при утечке пароля конечного пользователя не дать злоумышленнику соединиться с базой минуя ваше приложение.


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

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

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


 




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


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

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