取消部署WebLogic应用程序时自动取消注册MBean(由Spring注册)

And*_*ich 3 java spring jmx weblogic weblogic9.x

在我的Spring应用程序(部署在WebLogic服务器上)中,我有以下Spring bean定义:

<context:mbean-server />

<bean id="mbeanExporter" class="org.springframework.jmx.export.MBeanExporter">
    <property name="beans">
        <map>
            <entry key="SpringBeans:name=hibernateStatisticsMBean,subsystem=${subsystem}" value-ref="hibernateStatisticsMBean" />                           
        </map>
    </property>
</bean>

<bean name="hibernateStatisticsMBean" class="org.hibernate.jmx.StatisticsService">
    <property name="sessionFactory" ref="sessionFactory" />
</bean>
Run Code Online (Sandbox Code Playgroud)

它在部署应用程序时注册新的MBean并且运行良好.但是,当我取消部署应用程序并再次部署它时,它会抱怨MBean已存在.

如何在应用程序取消部署期间自动取消注册MBean?它可以通过Spring完成,还是需要为此做一些WebLogic魔术?

Luc*_*sio 5

添加以下属性:

<property name="registrationBehaviorName" value="REGISTRATION_REPLACE_EXISTING"/>
Run Code Online (Sandbox Code Playgroud)

这样你的mBeanExporter看起来像:

<bean id="mbeanExporter" class="org.springframework.jmx.export.MBeanExporter">
    <property name="registrationBehaviorName" value="REGISTRATION_REPLACE_EXISTING"/>
    <property name="beans">
        <map>
            <entry key="SpringBeans:name=hibernateStatisticsMBean,subsystem=${subsystem}" value-ref="hibernateStatisticsMBean" />                           
        </map>
    </property>
</bean>
Run Code Online (Sandbox Code Playgroud)