我有几个在Tomcat服务器上作为.war文件部署的Web应用程序。每个Web应用程序都有一个实现ServletContextListener的ApplicationListener.java类。在ApplicationListener.java类中,我使用ScheduledExecutorService的产卵它是用来消耗从队列中的消息的单个线程:Tomcat Web应用程序与其他外部部署的Tomcat Web应用程序进行通信
@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类。您是否建议从共享数据库而非单个属性文件加载属性? – littleK
是的,在这种情况下,将所有这些数据存入数据库会更好,请注意这是一种可能的解决方案,并且最好评估它是否最适合您的需求。 –