SpringBootを使用してSpringIntegrationアプリケーションを作成しました。 SpringBootでJMXを設定する方法を知りたいのですが。 Spring Boot Actuatorを使用する場合、デフォルトでJMXが構成されていると思います。
Spring Integration用にMBeanをエクスポートできるようにするには、他に何かを構成する必要がありますか?
私が見る例のほとんどは、applicationContext.xmlに次の行があります
<context:mbean-export/>
<context:mbean-server/>
私のApplication.Javaクラスは次のようになります。
package com.jbhunt.app.consumerappointmentintegration;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ImportResource;
@Configuration
@ComponentScan
@EnableAutoConfiguration
@ImportResource("classpath:META-INF/spring/integration/spring-integration-context.xml")
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
この行を構成に追加しても、Spring Integrationmbeanがエクスポートされないようです。
@EnableIntegrationMBeanExport(server = "mbeanServer", defaultDomain="my.company.domain")
私はこのビデオを参照しています https://www.youtube.com/watch?v=TetfR7ULnA8
ご存知のとおり、クラスパスにspring-integration-jmx
がある場合、Spring IntegrationJMXはデフォルトで有効になっています。そしてもちろん、spring.jmx.enabled = true
(デフォルト)の場合。
@EnableIntegrationMBeanExport
に基づいており、(ConfigurationClassParser
から)次の理由でインポートクラスをオーバーライドできないため、もう1つ@Import
を宣言するだけでオーバーライドすることはできません。
imports.addAll(sourceClass.getAnnotationAttributes(Import.class.getName(), "value"));
インポートされたクラスがすでに存在する場合、それらはオーバーライドできません。
要件を達成するには、いくつかの選択肢があります。
デフォルトのSpringBootJMXを無効にします-application.properties
spring.jmx.enabled = false
に追加し、@EnableIntegrationMBeanExport
を引き続き使用します
IntegrationMBeanExporter
@Bean
を手動で構成します。
my.company.domain
ドメインをapplication.properties
で構成するだけです。
spring.jmx.default_domain = my.company.domain
これを追加するのはかなり遅いです。しかし、endpoints.jmx.domain
に加えて、spring.jmx.default-domain
をアプリケーションごとに固有の何かに変更すると便利だと思いました。
これは、Tomcat7で実行されているSpringBoot1.4.1アプリの複数のインスタンスで発生します