@xworker.example.core.examples.http.HttpServer
sname
HttpServer
slabel
HttpServer
sdescriptors
xworker.lang.MetaDescriptor3
smany
true
seditCols
2
sinitialization
false
smodifier
public
@xworker.example.core.examples.http.HttpServer/@actions
sname
actions
sdescriptors
xworker.lang.MetaDescriptor3/@actions
@xworker.example.core.examples.http.HttpServer/@actions/@run
sname
run
sisSynchronized
false
sthrowException
true
suseOtherAction
false
svarScope
Global
sdisableGlobalContext
false
Scode
#$@text#$@
import org.mortbay.jetty.Connector;
import org.mortbay.jetty.Server;
import org.mortbay.jetty.nio.SelectChannelConnector;
import org.mortbay.jetty.webapp.WebAppContext;

def port = 9002;
if(actionContext.get("args") != null && args.length > 3){
    port = Integer.parseInt(args[3]);
}

def server = actionContext.get("jettyServer");
if(server != null) return;

try{
	def aserver = new Server();
    Connector connector=new SelectChannelConnector();
    connector.setPort(port);
    aserver.setConnectors([connector] as Connector[]);
    
    //根应用
    WebAppContext context = new WebAppContext(world.getPath() + "/webroot", "/");     	  
    context.setResourceBase(world.getPath() + "/webroot");
    context.setClassLoader(Thread.currentThread().getContextClassLoader());
    aserver.setHandler(context);
    
    //eclipse helper
    /*WebAppContext helpContext = new WebAppContext("webhelp", "/_help");     	  
    helpContext.setResourceBase("webhelp");
    helpContext.setClassLoader(Thread.currentThread().getContextClassLoader());
    aserver.addHandler(helpContext);*/

    aserver.setStopAtShutdown(true);
    
    new Thread(
        {
            aserver.start();
            aserver.join()
        } as Runnable
    ).start();    
    
    actionContext.getScope(0).put("jettyServer", aserver);
    log.info("http server start at " + port);
}catch(Exception e){
	e.printStackTrace();
}
#$@text#$@
sdescriptors
xworker.lang.actions.Actions/@GroovyAction
