Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Socket client-server и sql / 7 сообщений из 7, страница 1 из 1
24.09.2012, 17:04:56
    #37970258
HunterNomad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Socket client-server и sql
Доброго времени суток.
Я правлю чужой сокет-сервер (с классом взаимодействия с sql).
От клиента подается на сервер команды. Сервер слушает какая команда приходит и соответственно или что то пишет в базу, или вычитываем из базы и отправляет клиенту.

Обратил внимание на то, что в sql части (класс взаимодействия сервер-база) в каждом методе есть отдельно открытие и закрытие соединения с базой.

Примет:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
public SQL() throws ClassNotFoundException, InstantiationException, IllegalAccessException, SQLException { 
        . . .
        String url = "jdbc:mysql://localhost:3306/icross";
        Class.forName("com.mysql.jdbc.Driver").newInstance();
        conn = DriverManager.getConnection(url, properties);
        System.out.println("Database connection established");
    }
. . . 
public void addUser(String newid, String login, String password, String date) throws SQLException {
        stmt = (com.mysql.jdbc.PreparedStatement) conn.prepareStatement("INSERT users " + "(id, login, password, date)" + "VALUES (?,?,?,?)");
        stmt.setInt(1, Integer.valueOf(newid));
        stmt.setString(2, login);
        stmt.setString(3, password);
        stmt.setString(4, date);
        int is;
        is = stmt.executeUpdate();
        stmt.close();
        conn.close();
 }



И таких открытий-закрытий вагон.
Вопрос — правильно ли это, или нужно создавать один конект при подключении пользователя и запускать необходимые методы, а уж после закрытия сессии полный дисконект с базой.

Спасибо
...
Рейтинг: 0 / 0
24.09.2012, 17:06:02
    #37970262
grasoff.net
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Socket client-server и sql
HunterNomadсоздавать один конект при подключении пользователя и запускать необходимые методы, а уж после закрытия сессии полный дисконект с базойконешно
...
Рейтинг: 0 / 0
24.09.2012, 17:10:14
    #37970269
HunterNomad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Socket client-server и sql
grasoff.netHunterNomadсоздавать один конект при подключении пользователя и запускать необходимые методы, а уж после закрытия сессии полный дисконект с базойконешно
А .... Я догадывался ...
Просто такого сам никогда не писал, но когда смотрел логи .... ;-) в общем скоро для них пришлось бы отдельно сервер держать.

Придется переписывать самому .

Спасибо. И удачных удач!!!
...
Рейтинг: 0 / 0
24.09.2012, 17:11:12
    #37970270
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Socket client-server и sql
HunterNomadОбратил внимание на то, что в sql части (класс взаимодействия сервер-база) в каждом методе есть отдельно открытие и закрытие соединения с базой.

Это больше на конструктор похоже, а не на метод.

HunterNomadИ таких открытий-закрытий вагон.
Вопрос — правильно ли это,

Это сильно зависит от обстоятельств. Но введение пула, для сервера существенно повысит производительность. Хотя в таком сервере возможны проседания и в других местах. На общем фоне может и не заметны тормоза.

HunterNomadили нужно создавать один конект при подключении пользователя и запускать необходимые методы, а уж после закрытия сессии полный дисконект с базой.
Так как аутентификация собственная, то смысла в connection per session особого нет. Connection Pool + getConnection() в начале каждой операции\метода + close() в finally блоке - это наиболее подходящаяя стратегия для серверного приложения, так как при большой нагрузке, она позволяет минимизировать число физических соединений, но при этом выдававать почти такую же производительность как connection per session.
...
Рейтинг: 0 / 0
24.09.2012, 17:46:41
    #37970328
HunterNomad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Socket client-server и sql
BlazkowiczHunterNomadОбратил внимание на то, что в sql части (класс взаимодействия сервер-база) в каждом методе есть отдельно открытие и закрытие соединения с базой.

Это больше на конструктор похоже, а не на метод.

Согласен, public SQL() ... я привел в примере в качестве вступления.
Шас читаю про Connection Pool. Весчь интересная, но шибко (как для меня) запутанная (пока простого и понятного примера не нашел). Хотя понимаю, что в более серьезной ситуации только так и надо.
На сервер нагрузка одновременно 20 - 50 подключений. Стоить ли сильно из-за этого много чего писать? Предыдущий сервер весил 18Кб (без библиотек). Просто попросили добавить кое чего и при необходимости оптимизировать.
О как.

Спасибо.
...
Рейтинг: 0 / 0
24.09.2012, 17:52:04
    #37970336
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Socket client-server и sql
HunterNomadШас читаю про Connection Pool. Весчь интересная, но шибко (как для меня) запутанная (пока простого и понятного примера не нашел). Хотя понимаю, что в более серьезной ситуации только так и надо.
Apache Commons DBCP. Если хочется обойтись без либы, то можно нагуглить велосипед в один класс. Помню часто гулял на просторах инета.


HunterNomadНа сервер нагрузка одновременно 20 - 50 подключений. Стоить ли сильно из-за этого много чего писать? Предыдущий сервер весил 18Кб (без библиотек). Просто попросили добавить кое чего и при необходимости оптимизировать.
Ну, это вам решать стоит или нет.
...
Рейтинг: 0 / 0
24.09.2012, 18:01:58
    #37970359
HunterNomad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Socket client-server и sql
Blazkowicz, За наводку на Apache Commons DBCP спасибо. Шас буду читать.
А насчет BlazkowiczHunterNomadНа сервер нагрузка одновременно 20 - 50 подключений. Стоить ли сильно из-за этого много чего писать? Предыдущий сервер весил 18Кб (без библиотек). Просто попросили добавить кое чего и при необходимости оптимизировать.
Ну, это вам решать стоит или нет.
Если честно, то я никогда такого не писал. И с какой стороны к этому подойти изучаю в исходниках предыдущего программера.

Спасибо. ;)
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Socket client-server и sql / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]