Liferay Navigation Hook

1

Можно ли создать крючок в Liferay Navigation? Я хотел бы создать его для взаимодействия с изменениями сайта. Например, внутри сайта "A" все портлеты подключаются к схеме БД "A", но когда на сайте "B" одни и те же портлеты подключаются к схеме "B.",

В настоящее время я использую PhaseListener для получения сайта из ThemeDisplay и установки его в глобальной переменной сеанса - например:

//get the theme display from the current request
ThemeDisplay theme = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY);
theme.getSiteGroupName();  //connect to datastore based on this value

Я считаю, что было бы более эффективно иметь это изменение, основанное на навигации по сайту, чтобы не помещать этого слушателя во все портлеты.

Мысли и комментарии?

Теги:
liferay
liferay-6
liferay-theme

1 ответ

0

Нет. Соединения не предоставляются по требованию, они поступают из пула соединений. Поэтому, пока вы использовали A, в пуле были открыты соединения, указывающие на схему A. Когда вы попытаетесь перейти на B, соединения в пуле все еще будут хорошими, открытыми и доступными, поэтому их можно будет потянуть, а вы все равно будет использовать B.

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

  • 0
    Я использую MyBatis для взаимодействия с хранилищами данных. На этапе RESTORE_VIEW каждый портлет получает текущий сайт и загружает соответствующую среду; Mybatis должен обрабатывать соединения / пулы и т.д ... Меня интересует только запуск этой проверки (хотя и очень небольшой) каждый раз при загрузке портлета; отсюда навигационный хук, но я постепенно начинаю верить, что это невозможно.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню