1

次のように MBean を登録したいと思います。

    MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
    ObjectName name = null;
    try {
        name = ObjectNameProvider.getObjectName();
        mbs.registerMBean(ApplicationTracker.getInstance(), name);

アプリケーションを起動すると、登録が失敗し、javax.management.InstanceAlreadyExistsException がスローされ、JMX 機能を使用できません。

ただし、以下のように MBean を登録解除して再登録すると、例外なくすべて正常に動作します。なんで?

MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
        ObjectName name = null;
        try {
            name = ObjectNameProvider.getObjectName();
            if(mbs.isRegistered(name)){
                mbs.unregisterMBean(name);
            }
            mbs.registerMBean(ApplicationTracker.getInstance(), name);
4

0 に答える 0