1 //======================================================================== 2 //$Id: JettyStopMojo.java 4005 2008-11-06 22:31:53Z janb $ 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 * 29 * @author David Yu 30 * 31 * @goal stop 32 * @description Stops jetty that is configured with <stopKey> and <stopPort>. 33 */ 34 35 public class JettyStopMojo extends AbstractMojo 36 { 37 38 /** 39 * Port to listen to stop jetty on sending stop command 40 * @parameter 41 * @required 42 */ 43 protected int stopPort; 44 45 /** 46 * Key to provide when stopping jetty on executing java -DSTOP.KEY=<stopKey> 47 * -DSTOP.PORT=<stopPort> -jar start.jar --stop 48 * @parameter 49 * @required 50 */ 51 protected String stopKey; 52 53 public void execute() throws MojoExecutionException, MojoFailureException 54 { 55 if (stopPort <= 0) 56 throw new MojoExecutionException("Please specify a valid port"); 57 if (stopKey == null) 58 throw new MojoExecutionException("Please specify a valid stopKey"); 59 60 try 61 { 62 Socket s=new Socket(InetAddress.getByName("127.0.0.1"),stopPort); 63 s.setSoLinger(false, 0); 64 65 OutputStream out=s.getOutputStream(); 66 out.write((stopKey+"\r\nstop\r\n").getBytes()); 67 out.flush(); 68 s.close(); 69 } 70 catch (ConnectException e) 71 { 72 getLog().info("Jetty not running!"); 73 } 74 catch (Exception e) 75 { 76 getLog().error(e); 77 } 78 } 79 80 }