Можно ли создать крючок в 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
Я считаю, что было бы более эффективно иметь это изменение, основанное на навигации по сайту, чтобы не помещать этого слушателя во все портлеты.
Мысли и комментарии?
Нет. Соединения не предоставляются по требованию, они поступают из пула соединений. Поэтому, пока вы использовали A, в пуле были открыты соединения, указывающие на схему A. Когда вы попытаетесь перейти на B, соединения в пуле все еще будут хорошими, открытыми и доступными, поэтому их можно будет потянуть, а вы все равно будет использовать B.
Liferay на самом деле не справляется с переключением между схемами для любой из данных, которые он использует, и подобные вещи, вероятно, нанесут ущерб вашей среде.