【问题标题】:Tomcat web application to communicate with other external deployed tomcat web applicationsTomcat Web 应用程序与其他外部部署的 Tomcat Web 应用程序通信
【发布时间】:2013-01-11 19:54:48
【问题描述】:

我有几个 Web 应用程序在 Tomcat 服务器上部署为 .war 文件。每个 Web 应用程序都有一个实现 ServletContextListener 的 ApplicationListener.java 类。在 ApplicationListener.java 类中,我使用 ScheduledExecutorService 生成一个线程,用于从队列中消费消息:

@Override
public void contextInitialized(ServletContextEvent event) {

    ReferenceData.init();

    scheduler = Executors.newSingleThreadScheduledExecutor();
    scheduler.scheduleAtFixedRate(new ScheduledConsumer(), 0, ReferenceData.CONSUME_INTERVAL, TimeUnit.MILLISECONDS);

}

这是我的问题:是否有可能创建一个可以与所有其他人“交谈”的附加 Web 应用程序?我基本上想创建一个仪表板,让我显示每个 Web 应用程序的当前 ReferenceData.CONSUME_INTERVAL 值(在上面的代码中使用),以及更新它们的值的能力。

这可能吗?如果有任何设计建议、细节或示例,我将不胜感激。

谢谢!

【问题讨论】:

  • 是的,您可以集成您的所有应用程序,使用外部位置来存储消息以在它们之间交换。说到这里,你可以使用 JSM 或数据库表。
  • 所有应用程序当前都在使用来自 AMQP 服务器上不同队列的消息。 ReferenceData.init();调用将从属性文件加载 CONSUME_INTERVAL 并通过 ReferenceData.java 提供静态访问。所以我希望从一个地方访问每个应用程序的 ReferenceData 类。您是否建议从共享数据库而不是从单个属性文件加载属性?
  • 是的,在这种情况下,最好将所有这些数据都保存在数据库中,注意这是一种可能的解决方案,您最好评估一下它是否最适合您的需求.

标签: java jsp tomcat web-applications


【解决方案1】:

这是一种配置,对吧?

好吧,您可以在每个应用程序(从属)中创建一个 JMX-Bean,以及一个代理所有这些 JMX-Bean(主)的新应用程序。这些 JMX-Slaves 向 JMX-Master 注册/注销自己。

现在你得到了一些积分:

  • 在 tomcat 的 Manager-App 中实现了用户界面。
  • 已实现安全角色。
  • 实现了 JMX-Master-Configuration 的持久性。

(JMX-Master 可以在一个类app中解决)

【讨论】:

  • 我以前从未真正使用过 JMX,但经过初步阅读,它似乎是一个完美的尝试解决方案。谢谢!
猜你喜欢
  • 2011-08-11
  • 1970-01-01
  • 2012-12-01
  • 2014-09-22
  • 1970-01-01
  • 1970-01-01
  • 2012-03-17
  • 1970-01-01
  • 2016-11-15
相关资源
最近更新 更多