这是我的build.gradle ...
dependencies {
compile('org.springframework.boot:spring-boot-starter-parent:2.0.1.RELEASE')
compile('org.springframework.boot:spring-boot-starter-batch')
compile("org.springframework.boot:spring-boot-starter-jdbc")
compile("org.springframework.boot:spring-boot-starter-web")
compile("com.h2database:h2")
testCompile('org.springframework.boot:spring-boot-starter-test')
testCompile('org.springframework.batch:spring-batch-test')
}
我认为默认情况下会启用JMX。我转到JConsole,连接到应用程序,并期望在org.springframework.boot
下看到一个java.util.logging
文件夹,但什么也没看到。
因此,现在我选择一些自定义bean并添加@ManagedResource
,我知道这些。
但是,如果我想公开像@JobOperator这样的春季批处理豆怎么办?
在Spring Boot之前,我可以这样:
<bean class="org.springframework.jmx.export.MBeanExporter">
<property name="beans">
<map>
<entry key="spring:service=batch,bean=jobOperator">
<bean class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="target" ref="jobOperator"/>
<property name="interceptorNames" value="exceptionTranslator" />
</bean>
</entry>
</map>
</property>
<property name="assembler">
<bean class="org.springframework.jmx.export.assembler.InterfaceBasedMBeanInfoAssembler">
<property name="interfaceMappings">
<map>
<entry key="spring:service=batch,bean=jobOperator"
value="org.springframework.batch.core.launch.JobOperator"/>
</map>
</property>
</bean>
</property>
</bean>
当我定义我的JobOperator时,我在Spring Boot的@Configuration文件中执行:
@Bean
public JobOperator jobOperator() throws Exception {
SimpleJobOperator simpleJobOperator = new SimpleJobOperator();
// the operator wraps the launcher
simpleJobOperator.setJobLauncher(this.jobLauncher);
...
}
我无法在@Bean注释下添加@ManagedResource。那么如何将JobOperator公开为JMX bean?
答案 0 :(得分:0)
这是我在代码中的操作方式-
@Bean
public MBeanExporter exporter(){
MBeanExporter m = new MBeanExporter();
Map<String,Object> map = new HashMap<String, Object>();
JmxBean testBean = (JmxBean)ctx.getBean("testBean");
map.put("testBean",testBean);
m.setBeans(map);
return m;
}
@Bean
public JmxBean testBean(){
return new JmxBean("test",100);
}
在您的情况下,由于您要注册jobOperator
,只需用它替换testBean
bean中的exporter
。