2014-02-19 6 views
0

Моя цель: создание пула соединений JDBC в Apache, который будет оставаться в живых/многоразовые между несколькими пробегов чистой программы JAVAВедение пула соединений JDBC оживших из чистой программы JAVA

То, что я знаю, как это сделать до сих пор:

1) создать приложение JavaScript в Netbeans, которое использует пул соединений JDBC на основе источника данных, определенного в context.xml. Установленные соединения остаются в живых между несколькими запусками приложения, количество соединений на стороне базы данных не увеличивается независимо от того, сколько раз я подключаюсь/отключается в приложении. Это именно то, чего я хотел бы достичь в чистом JAVA.

2) создать чистую JAVA-приложение в Netbeans, которая устанавливает и использует пул соединений JDBC. Проблема: Пул соединений JDBC устанавливается/уничтожается при каждом запуске приложения. Приложение планируется на краткосрочную программу, часто выполняемую, только с несколькими соединениями/разъединениями. Поэтому вышеупомянутое создание/уничтожение пула побеждает свою собственную цель.


Можно ли объединить лучшее из двух предыдущих, чтобы достичь своей цели: каких-то образом сделать Apache создать пул соединений JDBC, который выживает между многочисленными пробегами моего чистого приложения JAVA, который будет использовать этот пул?

+0

Вам нужен пул соединений, который сохраняется на нескольких запусках JVM? Если соединения просто выполняют небольшую работу, то почему у вас вообще есть пул вместо того, чтобы просто создавать и уничтожать одно соединение за запуск? – chrylis

+0

Я нахожу довольно необычным для запуска приложения Java в Apache. Обычно приложение на стороне сервера Java работает на каком-то сервере приложений Java, например Tomcat. В этом случае ваш пул подключений будет работать до тех пор, пока сервер будет работать. –

+0

Да, это Apache Tomcat, я должен был быть более точным. – Pedja

ответ

0

Вы приближаетесь к этому неправильно.

Нет пула соединений, который может пережить перезапуск JVM, поскольку при выходе из JVM все сокеты, которые были открыты, будут уничтожены.

Если вы хотите иметь постоянный пул соединений, вам понадобится постоянный процесс JVM.

Tomcat - это прекрасно продуманный сервер, который может использовать пул соединений.

Если у вас есть запрос, который вы хотите запускать только изредка, для приложения, развернутого в Tomcat, существуют разные методы. Два готовых примера - таймер Java или использование библиотеки, такой как Quartz.

Если вы настаиваете на том, чтобы стиль «запускался один раз», вы всегда можете развернуть простую WAR, которая запускает ваш код один раз при запуске (с использованием метода инициализации ContextListener или загрузки на запуск Servlet) и то при необходимости внешний процесс разворачивает этот код. Пул соединений с Tomcat останется активным, и вы можете просто развернуть программу и снова запустить код.

Итак, существуют различные методы, которые можно применять здесь.

+0

Спасибо Will.Yes Мне нужен постоянный пул соединений, размещенный Apache Tomcat. Этот пул соединений будет использоваться независимыми программами JAVA, работающими в их собственных JVM. Я искал решение, которое позволит избежать повторного развертывания этих программ JAVA при каждом повторном прогоне, если это возможно. – Pedja

+0

Дополнительные пояснения: в этом случае целью является сохранение ресурсов на стороне базы данных, а не на стороне клиента/сервера приложений. Поэтому количество новых подключений к базе данных должно быть минимизировано. Эффективность JAVA и использование ресурсов будут считаться вторичной проблемой. – Pedja

0

Я узнал, что лучшим способом добиться того, что я хотел, было создание веб-службы и упаковка моего кода «чистой Java» в клиентскую службу веб-службы.

Смежные вопросы