Jakarta ee 如何多次实例化Liferay Portlet

Jakarta ee 如何多次实例化Liferay Portlet,jakarta-ee,liferay,portlet,Jakarta Ee,Liferay,Portlet,我正在使用JBoss7.1.1和Liferay 6.2GA。 我需要在每个页面上都有一个portlet实例。 MVCPortlet类的构造函数仅在部署portlet之后调用,因此它只是实例化一次(在部署之后) 我试过了 <instanceable>true</instanceable> 实例化portlet类与您无关。门户将为您这样做。portlet在类中没有状态:只要portlet中有一个成员变量,保持任何个人状态,这就是一个潜在的问题 门户通常只有一个Portlet

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

我试过了

<instanceable>true</instanceable>

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

门户通常只有一个Portlet对象(与Servlet一样)。您希望添加到portlet本身的所有状态都进入在各种生命周期方法期间处理的请求和响应对象


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

为什么需要在每次添加时调用构造函数?我构建项目的想法是,它将为每个页面实例化。我有一个特殊的应用程序,其中每个用户只有一个页面,但是用户没有登录。这对我来说很难过,但是谢谢。我看不出这种portlet的好处,我的意思是,一个jar可以在多台pc上运行,为什么portlet不能在不同的页面上运行呢。谢谢Olaf。当然,portlet可以位于多个页面上。只是完整状态不在portlet对象本身,而是在请求/响应或会话中。您希望每页有一个对象、每个用户有一个对象、每个会话有一个对象吗?那么集群节点(不同的JVM)呢?这个请求没有意义,实现也根本没有限制您。这就是这个规范是如何实现的,并且有一个明确的解决方案来实现您的潜在问题。这不是你想象的解决方案。
public class Controller extends MVCPortlet {
private final static Logger log = Logger.getLogger("Controller");
private int instance = 0;
public Controller() {
        instance++;
        log.info("instance: " + instance);
    }
}