【问题标题】:How limit access to JMX attributes如何限制对 JMX 属性的访问
【发布时间】:2015-03-18 00:48:45
【问题描述】:

我们的应用程序需要限制用户访问给定 MBean 的 JMX 属性和操作子集。例如C3P0 MBean 公开了很多属性/操作。假设我们不希望用户更改最小池大小。因此,我们想在 JMX 控制台中禁止该属性的设置器。

看Spring doc,我觉得可以: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 显示 clear 方法。然而,上面的配置暴露了所有原始的 Hibernate MBean 方法。

其次,C3P0 Mbean默认是暴露的,我不需要Spring bean暴露。该 MBean 在控制台中显示为“PooledDataSource[2spw3u98bqgqeg1697gnx|73302995]”。我不确定为该 MBean 仅公开一部分属性和操作的正确方法是什么。

感谢您的帮助/指点。谢谢。

【问题讨论】:

    标签: spring jmx mbeans spring-jmx mbeanexporter


    【解决方案1】:

    如果 bean 是“真正的”MBean(实现 &lt;class&gt;MBean),那么它会按原样导出。公开的属性/操作是该 MBean 的开发人员所期望的。

    MBeanInfoAssembler 仅用于根据 JMX 规范为 bean 构造一个 ModelMBean,前提是它还不是 MBean。

    您可以编写自己的 bean,将其委托给 hibernateStatisticsMBean,仅用于您想要公开的方法。

    根据您的描述,C3PO 似乎在 Spring 之外注册了自己的 MBean,因此如果不深入研究他们的代码以查看是否有某种方法可以禁用导出并再次使用委托 MBean,您将无能为力.

    【讨论】:

      猜你喜欢
      • 2010-12-02
      • 2014-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-29
      • 1970-01-01
      相关资源
      最近更新 更多