Configuration 是否可以在不重新启动整个Liferay portal的情况下反映portal-ext.properties中的更改?

Configuration 是否可以在不重新启动整个Liferay portal的情况下反映portal-ext.properties中的更改?,configuration,properties,liferay,Configuration,Properties,Liferay,我的问题是每次更改Liferay门户属性后(尤其是在新门户项目开始时),我都需要重新启动整个门户 我可以在钩子上设置一些属性,这些值将在重新部署后更改。此外,必须能够在运行时更改大多数门户属性 但是,您是否知道在不重新启动Liferay portal的情况下反映门户-ext.properties中的更改的一些方法?Liferay论坛中也有这样的问题: 但我担心大多数属性在门户启动时只读取一次。 通常,在本例中使用属性文件有此缺点 Liferay对此甚至还有一个问题尚未解决: 如前所述,这在生产

我的问题是每次更改Liferay
门户属性后(尤其是在新门户项目开始时),我都需要重新启动整个门户

我可以在钩子上设置一些属性,这些值将在重新部署后更改。此外,必须能够在运行时更改大多数门户属性


但是,您是否知道在不重新启动Liferay portal的情况下反映门户-ext.properties中的更改的一些方法?

Liferay论坛中也有这样的问题:

但我担心大多数属性在门户启动时只读取一次。 通常,在本例中使用属性文件有此缺点

Liferay对此甚至还有一个问题尚未解决:

如前所述,这在生产环境中根本不可能实现。因为
portal.properties
的属性是在门户启动时加载的


但是,对于开发,您可以使用一些步骤来配置它。使用此工具的唯一问题是它是付费的

如果创建一个钩子来覆盖门户属性,则只需部署钩子即可更改属性,而无需重新启动门户


请注意,不能使用钩子修改所有属性。要查看您可以修改的属性列表,请查看:。

我刚刚搜索了重新加载portal-ext.properties并在这里登陆。 确定-不是Liferay中的功能

所以我会用一个我喜欢的老把戏:

  • 将自定义属性放入(liferaytomcat home)/conf/filename.properties
  • 随时可以重新加载它们

    Properties customProperties = new Properties();
    customProperties.load(new FileInputStream(new File(System.getProperty("catalina.base"), "conf/filename.properties")));
    

  • 我必须承认,我没有在Liferay Portlet环境中尝试过这一点,但至少通过使用某些Liferay Helper类,这个系统属性(“catalina.base”)应该在这个上下文中可用。

    我知道这是一个非常旧的线程,但它可能对正在寻找某种类型的解决方法的人有所帮助
    正如我们所知,没有直接的方法可以做到这一点,但我使用java反射和类加载器做到了这一点。
    Liferay版本:6.x

    //Loading the PropsUtil class by using PortalClassLoader
    Class<?> prospsUtilClass = PortalClassLoaderUtil.getClassLoader().loadClass("com.liferay.portal.util.PropsUtil");
    //getting the reload method of PropsUtil class
    Method reloadMethod = prospsUtilClass.getMethod("reload", null);
    //Invoking the static reload method 
    reloadMethod.invoke(null, null);
    
    //使用PortalClassLoader加载PropsUtil类
    类proSpusUtilClass=PortalClassLoaderUtil.getClassLoader().loadClass(“com.liferay.portal.util.PropsUtil”);
    //获取PropsUtil类的重载方法
    方法reloadMethod=propsutilclass.getMethod(“reload”,null);
    //调用静态重载方法
    reloadMethod.invoke(null,null);
    

    重载方法(re)将门户ext属性加载到门户,这样我们就可以在不重新启动Liferay服务器的情况下使用新属性。

    初始化静态字段常量时,某些Liferay类会读取它们的属性。例如:

    public static final boolean ENABLED = GetterUtil.getBoolean(
        PropsUtil.get(DynamicCSSFilter.class.getName()));
    
    基本上,可以重新加载属性(例如通过控制面板中的脚本),但所有这些静态常量都将保留