Гиперзвуковая база данных внутри процесса, используемая в похожих веб-приложениях - PullRequest
0 голосов
/ 11 августа 2011

Я развертываю одно и то же веб-приложение Java несколько раз на веб-сервере. Я хотел бы поделиться внутрипроизводственной гиперзвуковой базой данных (без использования сокетов). База данных будет обновляться время от времени.

Кто-нибудь знает лучший способ сделать это? Как насчет общих библиотек (глобальный путь к классам на сервере, доступный для веб-приложений)? Разделяют ли разделяемые библиотеки статическое состояние? Если это так, возможно, я мог бы поместить небольшую фабрику соединений в общие библиотеки.

Ответы [ 2 ]

1 голос
/ 11 августа 2011

Вы можете сделать это. Секрет в том, чтобы поместить разделяемую библиотеку в директорию main / lib вашего сервера приложений, чтобы она загружалась основным загрузчиком классов. Тогда у вас будет только одна копия статических классов и переменных в JVM.

Не помещайте библиотеку в WEB-INF / lib. Каждое веб-приложение получает свой собственный загрузчик классов, и вы попадете в ад загрузчика классов, если несколько загрузчиков классов загрузят одну и ту же библиотеку.

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

0 голосов
/ 11 августа 2011

Насколько я знаю, нет способа использовать внутрипроцессную базу данных из нескольких процессов без использования выделенного процесса сервера и межпроцессного взаимодействия (например, сокетов).

Общие библиотеки не делят свои состояния между несколькими процессами.

...