私たちのアプリケーションには、特定の 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 の属性と操作のサブセットのみを公開する正しい方法が何であるかはわかりません。
あなたの助け/ポインタは大歓迎です。ありがとう。