zac*_*ung 8 jmx spring-integration spring-boot
我用Spring Boot创建了一个Spring Integration应用程序.我想知道如何使用Spring Boot配置JMX.我相信在使用Spring Boot Actuator时默认配置JMX.
我是否需要配置其他任何能够为Spring Integration导出MBean的东西?
我看到的大多数示例在applicationContext.xml中都有以下行
<context:mbean-export/>
<context:mbean-server/>
Run Code Online (Sandbox Code Playgroud)
我的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);
}
}
Run Code Online (Sandbox Code Playgroud)
将此行添加到配置似乎不会导出Spring Integration mbeans
@EnableIntegrationMBeanExport(server = "mbeanServer", defaultDomain="my.company.domain")
Run Code Online (Sandbox Code Playgroud)
Art*_*lan 18
如您所知,Spring Integration JMX默认启用,如果您只是spring-integration-jmx在类路径中.当然,如果spring.jmx.enabled = true(默认).
你不能覆盖只是声明一个@EnableIntegrationMBeanExport,因为它是基于@Import你因为(from ConfigurationClassParser)你不能覆盖导入类:
imports.addAll(sourceClass.getAnnotationAttributes(Import.class.getName(), "value"));
Run Code Online (Sandbox Code Playgroud)
如果导入的类已经存在,则它们不可覆盖.
您有多种选择来满足您的要求:
禁用默认的Spring Boot JMX - 只需添加到application.properties spring.jmx.enabled = false并继续使用@EnableIntegrationMBeanExport
IntegrationMBeanExporter @Bean手动配置.
只需在以下位置配置您的my.company.domain域名application.properties:
spring.jmx.default_domain = my.company.domain
Run Code Online (Sandbox Code Playgroud)添加这个已经很晚了;但除此之外,endpoints.jmx.domain我发现将spring.jmx.default-domain每个应用程序更改为独特的东西很有用
这是在 Tomcat 7 中运行的 Spring Boot 1.4.1 应用程序的多个实例
| 归档时间: |
|
| 查看次数: |
26869 次 |
| 最近记录: |