【问题标题】:Triggering actions in deployed Tomcat web applications在已部署的 Tomcat Web 应用程序中触发操作
【发布时间】:2012-10-13 17:34:46
【问题描述】:

我们有许多托管不同 Web 应用程序的 Tomcat 容器。所有这些应用程序都使用共享库。我们需要能够通过这个共享库触发操作。

这可以通过所有应用程序在其 web.xml 文件中指定的 servlet 来完成。然后可以通过 URL 触发操作。但是,这种方法似乎不是很优雅。

我也研究过 MBean,但不确定这是否是他们要解决的问题。

感谢任何用于执行此操作的最佳实践方法。详细讨论选项以帮助我思考这个问题会很棒。

谢谢。

【问题讨论】:

    标签: tomcat web-applications servlets web notifications


    【解决方案1】:

    我个人不明白为什么使用 HTTP POST 来触发某些东西是错误的,只要你实现了一个体面的身份验证机制。

    将 MBean 视为更强大的监控钩子。传统上,监控是一种只读活动,但使用 MBean,您可以公开一个 setter 并使用任意值调用它(顺便说一句,JMX 可以提供身份验证)。

    另一种选择:

    • RMI(糟糕!)
    • 轮询一些预定义的 URI(糟糕!)或 JNDI
    • 通过 jabber(或其他 IM 协议)通知
    • JMS

    但是,如果不了解完整的上下文,就很难给出建议。

    【讨论】:

    • 谢谢。 HTTP 通知的奇怪部分是强制每个 Web 应用程序将 servlet 包含在其 web.xml 文件中。这在我们的情况下会有点痛苦。我对 JNDI 选项很好奇——你会怎么做呢?我一直认为 JNDI 是由容器在 atart-up 上配置的只读位置。 MBean 选项听起来也很有趣——理论上它似乎提供了一个连接到网络应用程序的钩子
    • 似乎正是我们所需要的。请注意,此时我们讨论的是相当良性的操作,例如强制刷新缓存。
    • 将 JNDI 视为 Multimap(嵌套的 HashMap)。你必须定期轮询它,因为我不相信它提供即时通知,除非你在那里绑定一个对象通知器(监听器)并通过它调用通知方法。对于缓存刷新之类的事情,我认为 MBean 比 JNDI 更适合。但是,通过 JMX 公开 MBean 与公开 servlet 的开销相似。
    猜你喜欢
    • 1970-01-01
    • 2011-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-01
    • 1970-01-01
    • 2012-11-02
    相关资源
    最近更新 更多