deploycontrolleradmin.java

来自「RESIN 3.2 最新源码」· Java 代码 · 共 239 行

JAVA
239
字号
/* * Copyright (c) 1998-2008 Caucho Technology -- all rights reserved * * This file is part of Resin(R) Open Source * * Each copy or derived work must preserve the copyright notice and this * notice unmodified. * * Resin Open Source is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * Resin Open Source is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, or any warranty * of NON-INFRINGEMENT.  See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License * along with Resin Open Source; if not, write to the * *   Free Software Foundation, Inc. *   59 Temple Place, Suite 330 *   Boston, MA 02111-1307  USA * * @author Scott Ferguson */package com.caucho.server.deploy;import com.caucho.lifecycle.Lifecycle;import com.caucho.lifecycle.LifecycleListener;import com.caucho.lifecycle.LifecycleNotification;import com.caucho.management.server.AbstractManagedObject;import com.caucho.management.server.DeployControllerMXBean;import com.caucho.util.Alarm;import javax.management.ListenerNotFoundException;import javax.management.MBeanNotificationInfo;import javax.management.NotificationBroadcasterSupport;import javax.management.NotificationEmitter;import javax.management.NotificationFilter;import javax.management.NotificationListener;import java.util.Date;import java.util.logging.Level;import java.util.logging.Logger;/** * A deploy controller for an environment. */abstract public class DeployControllerAdmin<C extends EnvironmentDeployController>  extends AbstractManagedObject						        implements DeployControllerMXBean,             NotificationEmitter,             LifecycleListener,             java.io.Serializable{  private transient final C _controller;  // XXX: why transient?  private transient final NotificationBroadcasterSupport _broadcaster;  private long _sequence = 0;  public DeployControllerAdmin(C controller)  {    _controller = controller;    _broadcaster  = new NotificationBroadcasterSupport();    controller.addLifecycleListener(this);  }  /**   * Returns the controller.   */  protected C getController()  {    return _controller;  }  protected void register()  {    registerSelf();  }  protected void unregister()  {    unregisterSelf();  }  public String getName()  {    return _controller.getMBeanId();  }  public String getStartupMode()  {    return _controller.getStartupMode();  }  public String getRedeployMode()  {    return _controller.getRedeployMode();  }  public long getRedeployCheckInterval()  {    return _controller.getRedeployCheckInterval();  }  public String getState()  {    return getController().getState();  }  public Date getStartTime()  {    return new Date(getController().getStartTime());  }  /**   * Starts the controller.   */  public void start()    throws Exception  {    getController().start();  }  public void stop()    throws Exception  {    getController().stop();  }  public void restart()    throws Exception  {    getController().stop();    getController().start();  }  public void update()    throws Exception  {    getController().update();  }  /**   * Returns the root directory   */  public String getRootDirectory()  {    return _controller.getRootDirectory().getNativePath();  }  public void addNotificationListener(NotificationListener listener,                                      NotificationFilter filter,                                      Object handback)    throws IllegalArgumentException  {    _broadcaster.addNotificationListener(listener, filter, handback);  }  public void removeNotificationListener(NotificationListener listener)    throws ListenerNotFoundException  {    _broadcaster.removeNotificationListener(listener);  }  public void removeNotificationListener(NotificationListener listener,                                         NotificationFilter filter,                                         Object handback)    throws ListenerNotFoundException  {    _broadcaster.removeNotificationListener(listener, filter, handback);  }  public MBeanNotificationInfo[] getNotificationInfo()  {    // XXX: temporary hack    MBeanNotificationInfo status = new MBeanNotificationInfo(new String[] { "jmx.attribute.change" }, "status", "status attribute changes");    return new MBeanNotificationInfo[] { status };  }  synchronized public void lifecycleEvent(int oldState, int newState)  {    Logger log = _controller.getLog();    long timestamp = Alarm.getCurrentTime();    String oldValue = Lifecycle.getStateName(oldState);    String newValue = Lifecycle.getStateName(newState);    String message = newValue;    if (log.isLoggable(Level.FINEST))      log.log(Level.FINEST,  toString() + " lifecycleEvent `" + newValue  + "'");    if (newState == Lifecycle.IS_ACTIVE) {      LifecycleNotification notif;      notif = new LifecycleNotification(LifecycleNotification.AFTER_START,                                        this, _sequence++, timestamp,                                        toString () + " started");      _broadcaster.sendNotification(notif);    }    if (oldState == Lifecycle.IS_ACTIVE) {      LifecycleNotification notif;      notif = new LifecycleNotification(LifecycleNotification.BEFORE_STOP,                                        this, _sequence++, timestamp,                                        toString() + " stopping");      _broadcaster.sendNotification(notif);    }    /*    AttributeChangeNotification notification      = new AttributeChangeNotification(this, _sequence++,					timestamp, message, "State", "java.lang.String", oldValue, newValue);    _broadcaster.sendNotification(notification);    */  }  public String toString()  {    String name =  getClass().getName();    int i = name.lastIndexOf('.') + 1;    if (i > 0 && i < name.length())      name = name.substring(i);    return name + "[" + getObjectName() + "]";  }}

⌨️ 快捷键说明

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