View Javadoc

    1   //========================================================================
    2   //$Id: JettyStopMojo.java 5222 2009-05-29 07:34:32Z dyu $
    3   //Copyright 2000-2004 Mort Bay Consulting Pty. Ltd.
    4   //------------------------------------------------------------------------
    5   //Licensed under the Apache License, Version 2.0 (the "License");
    6   //you may not use this file except in compliance with the License.
    7   //You may obtain a copy of the License at
    8   //http://www.apache.org/licenses/LICENSE-2.0
    9   //Unless required by applicable law or agreed to in writing, software
    10  //distributed under the License is distributed on an "AS IS" BASIS,
    11  //WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12  //See the License for the specific language governing permissions and
    13  //limitations under the License.
    14  //========================================================================
    15
    16  package org.mortbay.jetty.plugin;
    17
    18  import java.io.OutputStream;
    19  import java.net.ConnectException;
    20  import java.net.InetAddress;
    21  import java.net.Socket;
    22
    23  import org.apache.maven.plugin.AbstractMojo;
    24  import org.apache.maven.plugin.MojoExecutionException;
    25  import org.apache.maven.plugin.MojoFailureException;
    26
    27  /**
    28   * JettyStopMojo - stops a running instance of jetty.
    29   * The ff are required:
    30   * -DstopKey=someKey
    31   * -DstopPort=somePort
    32   *
    33   * @author David Yu
    34   *
    35   * @goal stop
    36   * @description Stops jetty that is configured with &lt;stopKey&gt; and &lt;stopPort&gt;.
    37   */
    38
    39  public class JettyStopMojo extends AbstractMojo
    40  {
    41
    42      /**
    43       * Port to listen to stop jetty on sending stop command
    44       * @parameter
    45       * @required
    46       */
    47      protected int stopPort;
    48
    49      /**
    50       * Key to provide when stopping jetty on executing java -DSTOP.KEY=&lt;stopKey&gt;
    51       * -DSTOP.PORT=&lt;stopPort&gt; -jar start.jar --stop
    52       * @parameter
    53       * @required
    54       */
    55      protected String stopKey;
    56
    57      public void execute() throws MojoExecutionException, MojoFailureException
    58      {
    59          if (stopPort <= 0)
    60              throw new MojoExecutionException("Please specify a valid port");
    61          if (stopKey == null)
    62              throw new MojoExecutionException("Please specify a valid stopKey");
    63
    64          try
    65          {
    66              Socket s=new Socket(InetAddress.getByName("127.0.0.1"),stopPort);
    67              s.setSoLinger(false, 0);
    68
    69              OutputStream out=s.getOutputStream();
    70              out.write((stopKey+"\r\nstop\r\n").getBytes());
    71              out.flush();
    72              s.close();
    73          }
    74          catch (ConnectException e)
    75          {
    76              getLog().info("Jetty not running!");
    77          }
    78          catch (Exception e)
    79          {
    80              getLog().error(e);
    81          }
    82      }
    83
    84  }