是否可以在Liferay导航中创建一个钩子?我想创建一个与网站更改进行交互。例如,在站点“A”中,所有portlet都连接到数据库架构“A”,但在站点“B”中,相同的portlet连接到架构“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
我觉得根据网站导航进行此更改会更有效,以避免将此侦听器放在所有portlet上。
思考&评论
答案 0 :(得分:0)
没有。连接不是按需进行的,它们来自连接池。因此,当您使用A时,已在池中打开指向模式A的连接。当您尝试转到B时,池中的连接仍然良好且开放且可用,因此它们会被拉到您的位置仍然会使用B。
Liferay并不能很好地处理它使用的任何数据的模式之间的切换,这种事情可能会对您的环境造成严重破坏。