我们的应用程序需要限制用户访问给定 MBean 的 JMX 属性和操作子集。例如,C3P0 MBean 公开了很多属性/操作。假设我们不希望用户更改最小池大小。因此,我们想在 JMX 控制台中抑制该属性的设置器。
查看 Spring 文档,我认为这是可能的: http: //docs.spring.io/spring/docs/current/spring-framework-reference/html/jmx.html
下面是我与 Hibernate MBean 的约会:
<bean id="hibernateStatisticsMBean" class="org.hibernate.jmx.StatisticsService">
<property name="statisticsEnabled" value="true" />
<property name="sessionFactory" value="#{myEntityManagerFactory.sessionFactory}" />
</bean>
<bean id="mbeanServer" class="org.springframework.jmx.support.MBeanServerFactoryBean">
<property name="locateExistingServerIfPossible" value="true" />
</bean>
<bean id="jmxExporter" class="org.springframework.jmx.export.MBeanExporter" lazy-init="false">
<property name="server" ref="mbeanServer" />
<property name="beans">
<map>
<entry key="Hibernate:name=hibernateStatistics" value-ref="hibernateStatisticsMBean" />
</map>
</property>
<property name="assembler">
<bean class="org.springframework.jmx.export.assembler.MethodNameBasedMBeanInfoAssembler">
<property name="managedMethods">
<list>
<value>clear</value>
</list>
</property>
</bean>
</property>
</bean>
我希望 JMX 控制台中的 Hibernate MBean 只会显示清晰的方法。然而,上面的配置暴露了所有原始的 Hibernate MBean 方法。
其次,C3P0 Mbean默认是暴露的,我不需要Spring bean来暴露。该 MBean 在控制台中显示为“PooledDataSource[2spw3u98bqgqeg1697gnx|73302995]”。我不确定为该 MBean 仅公开一部分属性和操作的正确方法是什么。
感谢您的帮助/指点。谢谢。