如何多次实例化Liferay Portlet

时间:2014-10-22 09:23:37

标签: java-ee liferay portlet

我正在使用带有Liferay 6.2GA的JBoss 7.1.1。 我需要在每个页面上都有一个portlet实例。 MVCPortlet类的构造函数仅在部署portlet后调用,因此它只是实例化一次(在部署之后)。

我试过

<instanceable>true</instanceable>
在liferay-portlet.xml中,但这并未改变任何内容。

当我将portlet拖出“添加应用程序”菜单以将其放置在a上时,如何为我的portlet创建一个新实例,仅为此实例创建页面?

为了控制实例数量,我做了:

public class Controller extends MVCPortlet {
private final static Logger log = Logger.getLogger("Controller");
private int instance = 0;
public Controller() {
        instance++;
        log.info("instance: " + instance);
    }
}

1 个答案:

答案 0 :(得分:2)

实例化portlet类不是你的业务。门户网站将为您这样做。一个portlet在类中没有状态:只要你的portlet中有一个成员变量,保持任何个人状态,这就是一个潜在的问题。

门户网站通常只有一个portlet对象(就像servlet一样)。 您要添加到portlet本身的状态的所有都会进入在各种生命周期方法中处理的请求和响应对象。

无论你做什么,都依赖于多个(java)对象:这是错误的。您需要来更改您的架构