Вопрос

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

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

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

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

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

Это было полезно?

Решение

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top