【问题标题】:How can I share events with EventBus in different webapps?如何在不同的 web 应用中与 EventBus 共享事件?
【发布时间】:2012-10-05 14:58:19
【问题描述】:

我正在使用 tomcat。我想把番石榴罐和我自己的罐子放在 tomcat/lib 中。我的 jar 有一个工厂来获取事件总线,并且所有 webapps 都可以访问该工厂。我不知道如何在 webapp1 中注册一个侦听器并从 webapp2 发布一个事件。我在 webapp2 中使用的对象在 webapp1 中不存在,我只能共享 java 对象,如字符串、字符串映射等,但不能共享来自其他 webapp 的对象。

一些想法?

【问题讨论】:

    标签: java tomcat guava event-bus


    【解决方案1】:

    这是一个类加载问题:很可能,webapp1 的域类在 webapp2 中不(也不应该)可用。相信我,当我说你不想在 webapps 之间共享活动对象时。

    如果您想共享数据,请考虑使用适当的 JMS(或其他类似的消息传递库),如果您想共享行为,请使用 REST 服务。仅提及简单的常见解决方案。

    话虽如此,如果你真的需要去那里,你可以把你想共享的类放在一个 jar 中,然后把这个和番石榴放在服务器范围的类路径中 + 支付额外费用注意部署过程,因为您创建了内存泄漏。 (不过,每次你使用那种讨厌的 hack,上帝会杀死一只小猫

    【讨论】:

      【解决方案2】:

      Guava 的EventBus 仅适用于单个应用程序中的事件。它绝对不是用于应用程序或服务器之间的通信(至少不是直接的)。您也绝对不应该依赖于您当前在同一个 Tomcat 实例中运行两个 webapps 的事实,因为这可能是您在某个时候想要更改的内容。正如建议的那样,更好的解决方案是一个消息库,用于在 JMS 等应用程序/服务器之间进行通信。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-09-27
        • 1970-01-01
        • 1970-01-01
        • 2010-12-19
        • 1970-01-01
        • 2019-02-15
        • 1970-01-01
        相关资源
        最近更新 更多