Подключение пула Postgres SQL без сервера приложений

Это я отвечаю на вопрос Я писал ранее, где мне посоветовали использовать пул соединений для подключения к моей базе данных Postgres. Согласно документации Postgres jdbc4, они упоминают, что можно использовать два типа пулов. Один с сервером приложений, а другой без сервера приложений. Я не планирую использовать сервер приложений по причинам, о которых я расскажу позже. У меня был быстрый вопрос о пуле соединений без сервера приложений:

Если вы уверены, что хотите использовать это, необходимо задать свойства dataSourceName, databaseName, user и password (если это требуется для пользователя). Параметры serverName, portNumber, initialConnections и maxConnections являются необязательными. Обратите внимание, что только соединения для пользователя по умолчанию будут объединены в пул! Подключения для других пользователей будут обычными подключениями без пула и не будут учитываться при определении максимального размера пула.

Что такое пользователь по умолчанию? Это пользователь/роль базы данных Postgres? Будет ли достаточно добавить эти пакеты в мой внешний интерфейс и выделить сервер только для запуска Postgres?

Причина, по которой я склоняюсь к этому, заключается в том, что я работал с Glassfish раньше, и хотя подключение и постоянство с источником данных были легкими, я столкнулся с проблемами создания классов сущностей из уже созданной базы данных Postgres (240 таблиц, пожалуйста). см. здесь и здесь).

Поэтому я отказался от идеи использования EJB и Glassfish и вместо этого использовал простой шаблон Singleton с подключением jdbc для подключения к моей базе данных. Приложение работает довольно быстро, поэтому я склоняюсь к тому, чтобы не использовать сервер приложений. Это правильное впечатление или меня ложно проинформировали?


person greatkalu    schedule 26.06.2012    source источник
comment
Пользователь по умолчанию — это пользователь, указанный в свойствах пула соединений.   -  person a_horse_with_no_name    schedule 26.06.2012
comment
Спасибо. Если бы я выбрал такой фреймворк, как c3p0, мне нужно было бы просто добавить его в свое приложение… и ничего не менять на своем сервере, верно? На моем сервере есть только Postgres SQL.   -  person greatkalu    schedule 26.06.2012
comment
Правильный. Пул соединений имеет отношение только к серверу приложений. PostgreSQL не будет знать, является ли соединение из пула или нет.   -  person a_horse_with_no_name    schedule 26.06.2012
comment
Но у меня нет сервера приложений. У меня есть база данных PostgreSQL и приложение Java Swing. Это все. Я имел в виду добавление библиотек c3p0 в мое внешнее приложение.   -  person greatkalu    schedule 26.06.2012
comment
Используйте пул соединений из вашего приложения. Пулу все равно, вызывается ли он, например, из Tomcat или ваше приложение.   -  person a_horse_with_no_name    schedule 26.06.2012
comment
Спасибо, что прояснили это. Я буду читать больше и опубликую свои результаты/решение.   -  person greatkalu    schedule 27.06.2012


Ответы (1)


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

Во-вторых, для пула соединений вы должны помнить, что вы не можете повторно использовать соединение для одного пользователя в качестве другого пользователя. Таким образом, вы ожидаете, что обычно у вас будет пул соединений под одним пользователем приложения. Это настраивается на уровне пула соединений. у вас может быть несколько пулов соединений, соединяющих разные приложения с БД под разными пользователями.

person Chris Travers    schedule 04.04.2013