【问题标题】:Two spring applications, both use a certain jar and application context - how do i control from which appl i get a bean from the context?两个 Spring 应用程序,都使用某个 jar 和应用程序上下文 - 我如何控制从哪个应用程序从上下文中获取 bean?
【发布时间】:2014-05-04 15:34:50
【问题描述】:

我有两个 Spring 应用程序 applA 和 applB,在 Tomcat 中运行 - 都使用 jarX.jar 和 applicationContext-x.xml。
因此,对于每个应用程序,都会有一个在上述上下文中定义的特定 bean 的实例。
我正在使用注释通过 JMX 公开 bean 及其一些方法。 现在我想编写一个调用bean方法的测试客户端,但有时我想在applA中调用bean的方法,有时在applB中调用bean的方法。

我该怎么做?
我在每个应用程序中还有一个名为 jmxServerConfiguration 的 bean,但每个应用程序都使用不同的端口。

目前在我的 JMX 客户端中,我正在使用

获取 bean
BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource(applicationContextName);
theBean = beanFactory.getBean(BEAN_NAME);

但我总是得到 applA 的 bean。我如何告诉它我想要 applB 还是 applA 的 bean?

我是否应该(如何?)使用

MBeanServerConnection connection = JmxUtils.getMBeanServerConnection(url);

并在 url 中指定不同的端口,具体取决于我要从中获取 bean 的应用程序?

【问题讨论】:

  • 为每个 bean 赋予不同的 bean id 并通过 id 而不是 name 访问它们。
  • id 位于两个应用程序都包含的 jar 中的 .xml 中。有没有办法在其中一个应用程序中为 bean 创建别名?

标签: java spring tomcat jmx spring-jmx


【解决方案1】:

将 MBean 导出器上的 default-domain 设置为每个应用程序的不同值,并使用适当的 ObjectName 通过 JMX 访问 bean。

【讨论】:

    猜你喜欢
    • 2014-02-14
    • 1970-01-01
    • 2015-04-14
    • 2014-05-14
    • 2010-09-12
    • 1970-01-01
    • 1970-01-01
    • 2016-05-20
    • 2019-10-22
    相关资源
    最近更新 更多