Java 如何在liferay中设置门户范围的全局变量?

Java 如何在liferay中设置门户范围的全局变量?,java,liferay,portlet,portal,Java,Liferay,Portlet,Portal,我目前正在开发一个门户,需要使用Liferay作为门户服务器 我的应用程序将具有一些全局设置,我需要在门户中的所有portlet中访问这些设置 加载此类配置设置的最佳实践是什么?我希望从配置文件/数据库中读取这些配置设置。但它应该在应用程序启动时只读取一次。我不希望每次请求都从数据库/文件中读取设置 另外,我将使用velocity框架作为模板,我可以在velocity模板中读取相同的全局变量吗 我可以将这些全局变量放在我的portal-ext.properties文件中吗?如果可以,我如何在其中

我目前正在开发一个门户,需要使用Liferay作为门户服务器

我的应用程序将具有一些全局设置,我需要在门户中的所有portlet中访问这些设置

加载此类配置设置的最佳实践是什么?我希望从配置文件/数据库中读取这些配置设置。但它应该在应用程序启动时只读取一次。我不希望每次请求都从数据库/文件中读取设置

另外,我将使用velocity框架作为模板,我可以在velocity模板中读取相同的全局变量吗

我可以将这些全局变量放在我的portal-ext.properties文件中吗?如果可以,我如何在其中加载默认值

任何其他方法也会有所帮助

提前感谢

将以下内容添加到portal-ext.properties:

您可以为密钥实现PropsKeys:

public class ExtPortalKeys implements PropsKeys {
public static final String MY_KEY = "my.key";
}
然后打电话:

PrefsPropsUtil.getString(companyId, ExtPortalKeys.MY_KEY);

一种方法是使用登录后操作挂钩

将类定义到portal-ext.properties文件

login.events.post=com.xxx.PostLoginAction

在类中,您可以从文件/数据库中读取配置或属性。您可以将这些设置为可由所有portlet共享的一些全局会话值

有关登录后操作和会话共享的更多信息,请访问以下链接

PrefsPropsUtil.getString(companyId, ExtPortalKeys.MY_KEY);