Portlet事件发送对象数组

时间:2015-05-23 11:24:21

标签: arrays events liferay portlet

我们有多个具有多个portlet的项目,需要在它们之间发送一组对象。

我们的情况

其中一个porlets就像一个" Master-portlet",它将负责所有REST调用并使用json数据并将其解析为Java-Objects。 所有其他portlet将接收一组对象并将其显示给用户。

我们的想法和解决方案

我们希望通过事件发送对象数组来实现这一点。其中一个较小的" portlet将向" Master-portlet发送一个事件"和#34; Master-portlet"然后将回复一个新事件并发回正确的对象数组。

我们的问题

我们不知道如何通过事件发送对象数组。这甚至可能吗? 我们也不确定这是否是解决这个问题的正确方法。事件是否会发送更大量的数据? 对我们的案例有更好的解决方案吗?也许最好实现一个数据库,所有的portlet都从那里获取信息?

1 个答案:

答案 0 :(得分:2)

将portlet事件(和portlet)视为应用程序的UI层。基于此,判断您来回发送的数据量是否有意义。此外,如果你将portlet紧密结合在一起,你只是隐瞒了它们只能一起工作的事实 - 至少是一个有问题的想法。您更希望他们对常见情况(事件)做出反应,而不是依赖于可用的特定事件源(主portlet)。

话虽如此:作为JSR-286事件的有效负载发送的数据越复杂,在portlet处于不同的Web应用程序中时,您就越容易遇到类加载问题。如果您将自己限制为Java本机类型(例如StringMap等),则会忽略类加载器的问题。

通常,您希望将更改传达给当前上下文(例如,新的"当前客户"选择 - 和标识符)但不是所有特定数据(例如新客户的名称和顺序)历史)。其余的数据通常都来自业务层。

这并不是说你绝对不能把你的portlet连接起来 - 只是我的偏好是让它们非常松散地耦合,这样我就可以添加个别的小portlet来代替我昨天想到的那些。

如果你有时间,去年我已经介绍了in a webinar的一些内容,我希望这可以为我在这个快速回答中过于模糊的地方添加一些说明。