5

我的问题是每次更改 Liferay 后portal-properties(这很常见,尤其是在新门户项目开始时)我需要重新启动整个门户。

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

但是,您知道一些portal-ext.properties无需重新启动 Liferay 门户即可反映更改的方法吗?

4

6 回答 6

5

As stoldark mentioned, this is not possible in a production environment at all. Since portal.properties's properties are loaded at portal start-up.

But for development you can use a tool like JRebel, some steps to configure it here. The only issue you would get with this tool is that it is paid ;-).

于 2012-08-13T10:20:08.607 回答
3

我知道这是一个非常古老的线程,但它可能对正在寻找某种类型的工作的人有所帮助
因为我们知道没有直接的方法,但我通过使用 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);

Reload 方法(重新)将门户扩展属性加载到门户,因此我们可以使用新属性而无需重新启动 Liferay 服务器。

于 2018-08-10T07:50:49.433 回答
1

Liferay 论坛中也有人问过这个问题:

https://www.liferay.com/community/forums/-/message_boards/message/800954

但恐怕大多数属性在门户启动期间只读取一次。通常,在这种情况下使用属性文件有这个缺点。

Liferay 甚至有一个关于此问题的公开问题,但仍未解决:

http://issues.liferay.com/browse/LEP-5579

于 2012-08-13T09:53:57.213 回答
0

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

public static final boolean ENABLED = GetterUtil.getBoolean(
    PropsUtil.get(DynamicCSSFilter.class.getName()));

基本上,可以重新加载属性(例如通过控制面板中的脚本),但所有这些静态常量都将保留。

于 2018-08-14T11:42:50.290 回答
0

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

请注意,您不能使用挂钩修改所有属性。有关可以修改的列表,请查看:https ://docs.liferay.com/portal/6.2/definitions/ 。

于 2015-09-23T21:41:16.723 回答
0

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

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

  1. 将自定义属性放在 (liferay-tomcat-home)/conf/filename.properties
  2. 随时重新加载它们

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

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

于 2015-12-02T14:23:48.617 回答