2013-01-11 124 views
0

我有几个在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值(在上面的代码中使用),以及更新它们的值的能力。

这可能吗?我会很感激任何设计建议,细节或例子。

谢谢!

+1

是的,你可以使用*外部的位置存储的信息在它们之间进行交换整合*所有的应用程序。说这个,你可以使用JSM或数据库表。 –

+0

所有应用程序正在使用AMQP服务器上不同队列中的消息。 ReferenceData.init();调用将从属性文件加载CONSUME_INTERVAL,并通过ReferenceData.java提供静态访问。所以我正在寻找从一个地方访问每个应用程序的ReferenceData类。您是否建议从共享数据库而非单个属性文件加载属性? – littleK

+0

是的,在这种情况下,将所有这些数据存入数据库会更好,请注意这是一种可能的解决方案,并且最好评估它是否最适合您的需求。 –

回答

0

这是一种配置,对吧?

那么你可以在每个应用程序(从属)和一个代理所有这些JMX-Bean(主)的新应用程序中创建一个JMX-Beans。这些JMX从站向JMX-Master注册/取消注册。

现在你有一些要点:

  • 实施用户界面在Tomcat中的经理 - 应用程序。
  • 实施了安全角色。
  • 实现了JMX-Master-Configuration的持久性。

(JMX的法师可以在一类的应用程序来解决)

+0

我从来没有真正使用过JMX,但在初步阅读后,它似乎是一个完美的解决方案。谢谢! – littleK

相关问题