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:
Greg Wilkins 2010-11-17 22:41:33 +00:00
parent b063893cdf
commit 59f5bcce5b
3 changed files with 37 additions and 31 deletions

View File

@ -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

View File

@ -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.

View File

@ -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))
@ -116,13 +132,5 @@ 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);
}
}