Portlet 事件发送对象数组

Portlet event send array of objects

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

我们的情况:

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

我们的想法和解决方案:

我们想通过事件发送对象数组来实现这一点。 "smaller" portlet 之一将向 "Master-portlet" 发送一个事件,然后 "Master-portlet" 将用一个新事件作为答复并发回正确的对象数组。

我们的问题:

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

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

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

通常,您希望将更改传达给当前上下文(例如,新选择的 "current customer" - 和一个标识符),而不是所有特定数据(例如,新客户的姓名和订单历史记录)。无论如何,其余数据通常都来自业务层。

这并不是说您绝对不能耦合您的 portlet - 只是我更喜欢让它们非常松散地耦合,这样我就可以添加单独的小 portlet 来替换我昨天想到的那些。

如果你有时间的话,我去年已经介绍了一些 in a webinar,我希望这能澄清我在这个快速回答中过于含糊的地方。