Class Lifecycle

  • All Implemented Interfaces:
    ExtensionPoint
    Direct Known Subclasses:
    ExitLifecycle, SolarisSMFLifecycle, UnixLifecycle, WindowsServiceLifecycle

    public abstract class Lifecycle
    extends Object
    implements ExtensionPoint
    Provides the capability for starting/stopping/restarting/uninstalling Hudson.

    The steps to perform these operations depend on how Hudson is launched, so the concrete instance of this method (which is VM-wide singleton) is discovered by looking up a FQCN from the system property "hudson.lifecycle". (This may be set to a class defined in a plugin, in which case the singleton switches during startup.)

    Since:
    1.254
    Author:
    Kohsuke Kawaguchi
    • Constructor Detail

      • Lifecycle

        public Lifecycle()
    • Method Detail

      • get

        @NonNull
        public static Lifecycle get()
        Gets the singleton instance.
      • getHudsonWar

        public File getHudsonWar()
        If the location of jenkins.war is known in this life cycle, return it location. Otherwise return null to indicate that it is unknown.

        When a non-null value is returned, Hudson will offer an upgrade UI to a newer version.

      • rewriteHudsonWar

        public void rewriteHudsonWar​(File by)
                              throws IOException
        Replaces jenkins.war by the given file.

        On some system, most notably Windows, a file being in use cannot be changed, so rewriting jenkins.war requires some special trick. Override this method to do so.

        Throws:
        IOException
      • restart

        public void restart()
                     throws IOException,
                            InterruptedException
        If this life cycle supports a restart of Hudson, do so. Otherwise, throw UnsupportedOperationException, which is what the default implementation does.

        The restart operation may happen synchronously (in which case this method will never return), or asynchronously (in which case this method will successfully return.)

        Throw an exception if the operation fails unexpectedly.

        Throws:
        IOException
        InterruptedException
      • canRestart

        public boolean canRestart()
        The same as verifyRestartable() except the status is indicated by the return value, not by an exception.
      • onReady

        public void onReady()
        Called when Jenkins startup is finished or when Jenkins has finished reloading its configuration.
        Since:
        2.333
      • onReload

        public void onReload​(@NonNull
                             String user,
                             @CheckForNull
                             String remoteAddr)
        Called when Jenkins is reloading its configuration.

        Callers must also send an onReady() notification when Jenkins has finished reloading its configuration.

        Since:
        2.333
      • onStop

        public void onStop​(@NonNull
                           String user,
                           @CheckForNull
                           String remoteAddr)
        Called when Jenkins is beginning its shutdown.
        Since:
        2.333
      • onExtendTimeout

        public void onExtendTimeout​(long timeout,
                                    @NonNull
                                    TimeUnit unit)
        Tell the service manager to extend the startup or shutdown timeout. The value specified is a time during which either onExtendTimeout(long, TimeUnit) must be called again or startup/shutdown must complete.
        Parameters:
        timeout - The amount by which to extend the timeout.
        unit - The time unit of the timeout argument.
        Since:
        2.335
      • onStatusUpdate

        public void onStatusUpdate​(String status)
        Called when Jenkins service state has changed.
        Parameters:
        status - The status string. This is free-form and can be used for various purposes: general state feedback, completion percentages, human-readable error message, etc.
        Since:
        2.333
      • supportsDynamicLoad

        @Restricted(org.kohsuke.accmod.restrictions.Beta.class)
        public boolean supportsDynamicLoad()
        Whether PluginManager.dynamicLoad(File) should be supported at all. If not, RestartRequiredException will always be thrown.
        Returns:
        true by default
        Since:
        TODO