Cayenne с несколькими узлами

Я пытаюсь настроить сервер с помощью Cayenne (Remote Object Persistence). В моем случае у меня есть несколько баз данных, использующих одну и ту же карту. Каков наилучший способ реализовать это, поскольку два узла не могут указывать на одну и ту же карту?

Я нашел два способа сделать это, но они не совсем удовлетворительны:

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

  • Иметь один домен, содержащий несколько узлов и несколько карт, указывающих на один и тот же файл. Пришлось перегрузить EntityResolver, чтобы он строил кэш только на первой карте, и перегрузить SelectQuery, чтобы он указывал на нужную карту. Не уверен, что это хороший способ сделать это...

Спасибо за ваши ответы и комментарии.


person Adrien    schedule 31.07.2014    source источник


Ответы (1)


Предполагая, что Cayenne 3.1 или новее, я бы создал отдельный объект ServerRuntime для каждой БД. Источники данных для каждого из них могут быть созданы динамически при настройке новой среды выполнения. .

Чтобы подключить его для ROP, вам может потребоваться создать собственный сервлет, который имеет карту нескольких HessianServlets, по одному на БД, и отправляет запросы соответствующим экземплярам на основе некоторого параметра запроса.

person andrus_a    schedule 31.07.2014
comment
У меня Кайен 3.0. Но я попытался создать свой собственный сервлет, который отображает несколько HessianServlets, и он работает. Спасибо. - person Adrien; 01.08.2014