330265 start.jar --stop kills --exec subprocess
git-svn-id: svn+ssh://dev.eclipse.org/svnroot/rt/org.eclipse.jetty/jetty/trunk@2534 7e9141cc-0065-0410-87d8-b60c137991c4
This commit is contained in:
parent
b063893cdf
commit
59f5bcce5b
|
@ -3,6 +3,7 @@ jetty-7.2.2-SNAPSHOT
|
|||
+ 330208 Support new wording on servlet-mapping and filter-mapping merging from servlet3.0a
|
||||
+ 330188 Reject web-fragment.xml with same <name> as another already loaded one
|
||||
+ 330229 Jetty tries to parse META-INF/*.tld when jsp-api is not on classpath, causing DTD entity resoluton to fail
|
||||
+ 330265 start.jar --stop kills --exec subprocess
|
||||
+ 330417 Atomic PUT in PutFilter
|
||||
+ 330419 Reloading webapp duplicates StandardDescriptorProcessor
|
||||
|
||||
|
|
|
@ -497,7 +497,10 @@ public class Main
|
|||
public void start(List<String> xmls) throws FileNotFoundException, IOException, InterruptedException
|
||||
{
|
||||
// Setup Start / Stop Monitoring
|
||||
startMonitor();
|
||||
int port = Integer.parseInt(_config.getProperty("STOP.PORT",System.getProperty("STOP.PORT","-1")));
|
||||
String key = _config.getProperty("STOP.KEY",System.getProperty("STOP.KEY",null));
|
||||
Monitor monitor=new Monitor(port,key);
|
||||
|
||||
|
||||
// Load potential Config (start.config)
|
||||
List<String> configuredXmls = loadConfig(xmls);
|
||||
|
@ -570,7 +573,7 @@ public class Main
|
|||
return;
|
||||
}
|
||||
|
||||
// Show Command Line to execute Jetty
|
||||
// execute Jetty in another JVM
|
||||
if (_exec)
|
||||
{
|
||||
String cmd = buildCommandLine(classpath,configuredXmls);
|
||||
|
@ -578,6 +581,7 @@ public class Main
|
|||
copyInThread(process.getErrorStream(),System.err);
|
||||
copyInThread(process.getInputStream(),System.out);
|
||||
copyInThread(System.in,process.getOutputStream());
|
||||
monitor.setProcess(process);
|
||||
process.waitFor();
|
||||
return;
|
||||
}
|
||||
|
@ -641,7 +645,7 @@ public class Main
|
|||
}
|
||||
catch(IOException e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
// e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1054,13 +1058,6 @@ public class Main
|
|||
return cfgstream;
|
||||
}
|
||||
|
||||
private void startMonitor()
|
||||
{
|
||||
int port = Integer.parseInt(_config.getProperty("STOP.PORT",System.getProperty("STOP.PORT","-1")));
|
||||
String key = _config.getProperty("STOP.KEY",System.getProperty("STOP.KEY",null));
|
||||
|
||||
Monitor.monitor(port,key);
|
||||
}
|
||||
|
||||
/**
|
||||
* Stop a running jetty instance.
|
||||
|
|
|
@ -32,33 +32,31 @@ import java.net.Socket;
|
|||
*/
|
||||
public class Monitor extends Thread
|
||||
{
|
||||
private int _port;
|
||||
private String _key;
|
||||
private Process _process;
|
||||
private final int _port;
|
||||
private final String _key;
|
||||
|
||||
ServerSocket _socket;
|
||||
|
||||
Monitor(int port,String key)
|
||||
{
|
||||
_port=port;
|
||||
_key=key;
|
||||
|
||||
try
|
||||
{
|
||||
if(_port<0)
|
||||
if(port<0)
|
||||
return;
|
||||
setDaemon(true);
|
||||
setName("StopMonitor");
|
||||
_socket=new ServerSocket(_port,1,InetAddress.getByName("127.0.0.1"));
|
||||
if (_port==0)
|
||||
_socket=new ServerSocket(port,1,InetAddress.getByName("127.0.0.1"));
|
||||
if (port==0)
|
||||
{
|
||||
_port=_socket.getLocalPort();
|
||||
System.out.println(_port);
|
||||
port=_socket.getLocalPort();
|
||||
System.out.println(port);
|
||||
}
|
||||
|
||||
if (_key==null)
|
||||
if (key==null)
|
||||
{
|
||||
_key=Long.toString((long)(Long.MAX_VALUE*Math.random()+this.hashCode()+System.currentTimeMillis()),36);
|
||||
System.out.println("STOP.KEY="+_key);
|
||||
key=Long.toString((long)(Long.MAX_VALUE*Math.random()+this.hashCode()+System.currentTimeMillis()),36);
|
||||
System.out.println("STOP.KEY="+key);
|
||||
}
|
||||
}
|
||||
catch(Exception e)
|
||||
|
@ -66,12 +64,28 @@ public class Monitor extends Thread
|
|||
Config.debug(e);
|
||||
System.err.println(e.toString());
|
||||
}
|
||||
finally
|
||||
{
|
||||
_port=port;
|
||||
_key=key;
|
||||
}
|
||||
|
||||
if (_socket!=null)
|
||||
this.start();
|
||||
else
|
||||
System.err.println("WARN: Not listening on monitor port: "+_port);
|
||||
}
|
||||
|
||||
public Process getProcess()
|
||||
{
|
||||
return _process;
|
||||
}
|
||||
|
||||
public void setProcess(Process process)
|
||||
{
|
||||
_process = process;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
|
@ -93,6 +107,8 @@ public class Monitor extends Thread
|
|||
{
|
||||
try {socket.close();}catch(Exception e){e.printStackTrace();}
|
||||
try {_socket.close();}catch(Exception e){e.printStackTrace();}
|
||||
if (_process!=null)
|
||||
_process.destroy();
|
||||
System.exit(0);
|
||||
}
|
||||
else if ("status".equals(cmd))
|
||||
|
@ -117,12 +133,4 @@ public class Monitor extends Thread
|
|||
}
|
||||
}
|
||||
|
||||
/** Start a Monitor.
|
||||
* This static method starts a monitor that listens for admin requests.
|
||||
*/
|
||||
public static void monitor(int port,String key)
|
||||
{
|
||||
new Monitor(port,key);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue