
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
01.04.2013, 20:25:26
|
|||
|---|---|---|---|
|
|||
Сервис на Java + connection pool |
|||
|
#18+
Уважаемые специалисты по Java! Делаю первые шаги. Передо мной стоит задача написать демона на Джаве. Есть готовая jar-библиотека (Asterisk-Java), которую нужно подцепить, затем установить коннект с сервером и вписать определённую логику в handleEvent, которая и должна выполняться. Собственно, есть две проблемных задачи, которые так или иначе связаны друг с другом. Сначала я разбирался как написать демона, поиски привели к японскому Java Service Wraper. JSW — штука хорошая и задачи свои выполняет. Она, действительно, запускает приложение в фоне и избавляет разработчика от кучи рутиной работы, но… Мой демон предполагает периодическую запись данных в БД (pgsql/mssql). Количество операций в секунду может доходить до тысячи. Для таких вещей, как я понимаю, требуется connection pool, для того чтобы повысить производительность за счёт экономии на авторизации. Работаю в NetBeans. В начале пробежался по продукту, предварительное изучение дало информацию, что connection pool "легко и просто" создаются в web-приложениях (кои меня не интересуют), и в так называемых EnterpriseApplication. Последнее меня зацепило, и дальше пошла игра слов. При создании EnterpriseApplication написано, что это "решения для бизнеса", и они комплектуются необходимыми библиотеками и инструментами, которые могут потребоваться при создании бизнес-приложений. Далее я узнал, что существует целый Сервер приложений GlassFish, и что в нём есть довольно неплохой инструментарий в плане работы с базами данных. Далее я нашел и заказал пару книжек Дэвида Хеффельфингера. И вот, получаю я книжки "Разработка приложений Java EE 6 и NetBeans 7" и "Java EE 6 и сервер приложений GlassFish 3", открываю их и малость опупеваю… Обе книжки про веб! Зачем мне веб??! Я же приложение собирался писать! В общем, я думаю вы меня поймёте. Ещё у меня есть "Полное руководство" от Шилдта, но там описаны базовые вещи. Собственно, прощу помощи подсказать в какую сторону рулить и как связать пулы соединений с БД в демоне. P.S. Есть пул соединений BoneCP с неплохим описанием, но я уже боюсь в очередной раз обжечься об специфику терминологии языка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.04.2013, 20:37:00
|
|||
|---|---|---|---|
|
|||
Сервис на Java + connection pool |
|||
|
#18+
В верном направлении двигаетесь. Два замечания. У Java Service Wrapper есть лицензионные ограничения. Есть более свободная альтернатива - Apache procrun Что не так с примерами? На том же BoneCP кликаем в меню Examples, получаем внятный пример без всяких JEE http://jolbox.com/index.html?page=http://jolbox.com/jdbc-example.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.04.2013, 20:49:17
|
|||
|---|---|---|---|
|
|||
Сервис на Java + connection pool |
|||
|
#18+
JSW рассматриваю профессиональную версию (15-ти минутная для разработки вполне годится). В первую очередь прошу помощи отмести GlassFish. Я правильно понимаю, что это веб, веб и только веб и мне это не надо. Просто я напоролся в JSB на @schedule, которая явно в вебе лишняя, и актуальна для приложений немного другого уровня. Или это всего лишь удобный инструмент "очищать спам-комментарии раз в сутки"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.04.2013, 21:03:30
|
|||
|---|---|---|---|
|
|||
Сервис на Java + connection pool |
|||
|
#18+
Мой демон предполагает периодическую запись данных в БД (pgsql/mssql). Количество операций в секунду может доходить до тысячи. Для таких вещей, как я понимаю, требуется connection pool, для того чтобы повысить производительность за счёт экономии на авторизации. Сonnection pool нужен если у вас сервер который обслуживает нескольких пользователей. Если вам надо раз в час что-то загрузить в БД, то пул не нужен, создайте одно соединение и пользуйтесь им на здоровье. Glassfish вам вряд ли нужен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.04.2013, 21:06:11
|
|||
|---|---|---|---|
|
|||
Сервис на Java + connection pool |
|||
|
#18+
У меня будет демон с многопоточными процессами. Их может быть 1000. И каждый использует базу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.04.2013, 21:16:52
|
|||
|---|---|---|---|
Сервис на Java + connection pool |
|||
|
#18+
Sergey N. Korobeynikov, На каждый поток свое соединение. Будет быстро. Про тысячу штук спросите в форуме бд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.04.2013, 21:17:46
|
|||
|---|---|---|---|
|
|||
Сервис на Java + connection pool |
|||
|
#18+
Я запускал реальное java-приложения в виде сервиса через apache procrun. Ничем не отличалось от работы в виде приложения. В том числе и работа с базой (Oracle JDBC-thin). Поэтому, если ваше приложение корректно работает с базой, то "конвертация" в сервис проблем не добавит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.04.2013, 21:21:08
|
|||
|---|---|---|---|
|
|||
Сервис на Java + connection pool |
|||
|
#18+
Sergey N. KorobeynikovУ меня будет демон с многопоточными процессами. Их может быть 1000. И каждый использует базу.Вот прямо все одновременно? Или, всё-таки, забрал подключение, отправил запрос (получил результат) и освободил подключение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.04.2013, 21:30:54
|
|||
|---|---|---|---|
|
|||
Сервис на Java + connection pool |
|||
|
#18+
Речь про одновременные подключения идёт. Хотелось бы иметь аналог работы пула соединений по подобию Серверов приложений. Чтобы в рабочем коде только были три вещи: запрос свободного соединения, операция, отзыв соединения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.04.2013, 21:37:40
|
|||
|---|---|---|---|
|
|||
Сервис на Java + connection pool |
|||
|
#18+
Sergey N. KorobeynikovЧтобы в рабочем коде только были три вещи: запрос свободного соединения, операция, отзыв соединения.Или я чего-то не понимаю или оно так и будет. Настройка пула, наверное, да - разная, но работе-то с чего различаться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.04.2013, 21:49:36
|
|||
|---|---|---|---|
|
|||
Сервис на Java + connection pool |
|||
|
#18+
Будет у меня handleEvent. Как сделать так, чтобы в нём логика начиналась со следующего кода: Код: java 1. А рутина была бы вынесена "за границу": Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. P.S. Я только начинаю работать с Java и не владею её философией, большинство очевидных вещей для меня такими не являются. Пожалуйста, подскажите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.04.2013, 23:29:06
|
|||
|---|---|---|---|
Сервис на Java + connection pool |
|||
|
#18+
Sergey N. Korobeynikov, Вы вроде с темы съехали. Пул заработал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.04.2013, 06:11:04
|
|||
|---|---|---|---|
|
|||
Сервис на Java + connection pool |
|||
|
#18+
Sergey N. KorobeynikovПожалуйста, подскажите.Когда мне потребовался (специфичный) пул, я открыл Java SE 6 Documentation , ткнул в Concurrency Utilities и нашёл описание ArrayBlockingQueue. Вам всего этого можно не читать, т.к. вы уже нарисовали практически готовый код использования готовой реализации пула. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.04.2013, 07:28:02
|
|||
|---|---|---|---|
|
|||
Сервис на Java + connection pool |
|||
|
#18+
Это всё конечно хорошо, но хотелось бы использовать вендорные вещи, ещё лучше непосредственно самого Оракла, а не открытые проекты. Именно поэтому я и переживаю за GlassFish. Кто работал с GlassFish, скажите, это только веб или нет? Почему его назвали сервером приложений? Можно ли реализовать логику работы с базой данных через публичные интерфейсы EJB, а непосредственно демона на JSW? Чтобы демон как клиент подключался по удалённым интерфейсам EJB, а дальше выполнялась непосредственно вся логика на стороне EJB. Если GlassFish — это только веб, то есть ли у Оракла аналог JSW, ведь серьёзные вещи должны работать в качестве сервиса. P.S. Я пул пока не запускал, определяюсь с выбором решений и технологий. Даже если всё заработает, это не показатель. Хочется иметь вендорные вещи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.04.2013, 08:55:58
|
|||
|---|---|---|---|
Сервис на Java + connection pool |
|||
|
#18+
Sergey N. Korobeynikov, как предполагается подключатся к твоему сервису? По какому протоколу идёт общение. Городить монстра на Glassfish это слишком круто. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.04.2013, 09:45:43
|
|||
|---|---|---|---|
Сервис на Java + connection pool |
|||
|
#18+
>Кто работал с GlassFish, скажите, это только веб или нет? Почему его назвали сервером приложений? вопрос какой то странный.. что именно интересует то ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.04.2013, 09:49:35
|
|||
|---|---|---|---|
|
|||
Сервис на Java + connection pool |
|||
|
#18+
Как на GlassFish написать демон, который бы использовал реализацию пулов GlassFish. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.04.2013, 10:14:17
|
|||
|---|---|---|---|
Сервис на Java + connection pool |
|||
|
#18+
если правильно понял вопрос, можно ли чтобы glassfish по выполнял какую то работу по расписанию ? можно, например EJB @TimerService, но это можно сделать на простых потоках, ExecutorService хотя бы, и как сказал GregTk, использовать glassfish только для этого жирновато как то.. а так без проблем, настраиваете в админке glassfish jdbc pool, потом jndi, далее в коде Код: java 1. 2. 3. 4. 5. 6. 7. .... в каком то сервисном классе Код: java 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.04.2013, 10:22:58
|
|||
|---|---|---|---|
|
|||
Сервис на Java + connection pool |
|||
|
#18+
Причём тут работа по расписанию? Вы знаете что такое демон? Что такое бинд порта? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.04.2013, 10:33:33
|
|||
|---|---|---|---|
Сервис на Java + connection pool |
|||
|
#18+
Sergey N. Korobeynikov, ты спрашивал про идеологию. - полная отвязка от Конкретной БД и бесплатные решения. Sergey N. Korobeynikovведь серьёзные вещи должны работать в качестве сервиса. скажу крамольную вещь. Сервер приложений - это тот же демон или сервис. Упрощённо - Ставишь томкат и работай. Или больше рассказывай, чем спрашивай. IMHO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.04.2013, 10:36:40
|
|||
|---|---|---|---|
|
|||
Сервис на Java + connection pool |
|||
|
#18+
Sergey N. KorobeynikovКак на GlassFish написать демон, который бы использовал реализацию пулов GlassFish. Давайте по порядку. Во-первых, сервер приложений, как правило, может отвечать по http протоколу, а значит является web сервером. При этом может генерить динамический контент. Так что ничего страшного, что в книгах о GlassFish пишут про web - это одна из задач, которые могут выполняться на сервере. Во-вторых, вам, видимо, сервер приложений тут не нужен - у вас работает единственный клиент, хоть и с 1000 потоками. Подключите его напрямую к базе и наслаждайтесь быстродействием. Если считаете, что количество коннектов с данного клиента может превысить возможности SQL сервера (да и клиента тоже), используйте готовый connection pool (например, c3p0). Если хочется сделать "как в GlassFish", можно порыться в его потрохах и посмотреть, что там используется. Не исключено, что тот же самый c3p0. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.04.2013, 10:43:41
|
|||
|---|---|---|---|
Сервис на Java + connection pool |
|||
|
#18+
ivanra, +1 вполне масштабная линейка решений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.04.2013, 11:27:12
|
|||
|---|---|---|---|
Сервис на Java + connection pool |
|||
|
#18+
>Причём тут работа по расписанию? Вы знаете что такое демон? Что такое бинд порта? похоже вашу версию не знаю, озвучивайте жду ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.04.2013, 17:29:12
|
|||
|---|---|---|---|
Сервис на Java + connection pool |
|||
|
#18+
Можно использовать Commons Pool - сделаете сами себе хороший пул с блэкджеком и шлюхами. В коде реализуете фабрику объектов. Типа: Код: java 1. 2. 3. 4. И далее создаёте и настраиваете пул: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. Можно пойти другим путём. Найти к Вашей базе данных (не нашёл, какая именно) JDBC-драйвер, найти, какой класс перекрывает DataSource или ConnectionPoolDataSource с реализацией пула. Обычно они делаются под инстанцирование с помощью JNDI на серверах приложений, но можно попробовать и ручками создать и настроить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=59&mobile=1&tid=2129635]: |
0ms |
get settings: |
19ms |
get forum list: |
28ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
54ms |
get topic data: |
21ms |
get forum data: |
5ms |
get page messages: |
108ms |
get tp. blocked users: |
3ms |
| others: | 317ms |
| total: | 569ms |

| 0 / 0 |
