recycler.java

来自「jmx codeJava源码」· Java 代码 · 共 70 行

JAVA
70
字号

package book.jmx.examples;

import javax.management.*;
import javax.management.loading.*;
import java.net.*;

public class Recycler 
  implements RecyclerMBean, MBeanRegistration {

  protected String component   = "Standard User";
  private MBeanServer server = null;
  
  
  // retrieve the server reference
  public ObjectName preRegister(MBeanServer server,
                                ObjectName name) {
                                    
    this.server = server;
    return name;
  }
  
  // recycle implementation

  public String recycle(String clazz, String url)
      throws MalformedURLException {

    ObjectName user = null;
    URL jarURL      = new URL(url);
    
    try {
      
      user = new ObjectName("example:name=User,timestamp=" + System.currentTimeMillis());

      // create new MLet class loader
      ObjectName loader = new ObjectName(
          "Loader:class=" + clazz +
          ",timestamp="   + System.currentTimeMillis()
      );
      
      MLet mlet = new MLet();
      mlet.addURL(jarURL);
      
      // unregister the old implementation
      if (server.isRegistered(user))
          server.unregisterMBean(user);
      
      // register the loaded mbean    
      server.registerMBean(mlet, loader);
      Object mbean = server.instantiate(clazz, loader);
      server.registerMBean(mbean, user);
  
      component = clazz;
    }
    catch (JMException e) {
      e.printStackTrace();
    }
    
    return "Implementation changed to " + component;
  }
  
  
  public void postRegister(Boolean b) {}
  public void preDeregister() throws Exception {}
  public void postDeregister() {}
  
}


⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?