我看论坛上得帖子都是在一个main方法中用一个线程启动了jetty服务器,以后就直接开发jsp文件了.但是我有个需求:就是希望这个main方法里面包含一个功能,当接收到用户一个请求(例如: /webapp/stopserver?stop=true),就停止服务器! 调用可以有一种方法,就是jetty监听一个http请求,接收到了,就调用 Server.stop()方法停止服务器, 比如:
if(request.getParameter(stop).equals("true")){
Server.stop();
} //类似这样逻辑调用
public static void main(String[] args) throws Exception{
// TODO Auto-generated method stub
// 创建Jetty HttpServer对象
Server server = new Server();
BoundedThreadPool threadPool = new BoundedThreadPool();
threadPool.setMaxThreads(100);
server.setThreadPool(threadPool);
Connector connector = new SelectChannelConnector();
connector.setPort(8080);
server.setConnectors(new Connector[] { connector });
WebAppContext context = new WebAppContext("webapp", "/webapp");
server.addHandler(context);
server.setStopAtShutdown(true);
server.setSendServerVersion(true);server.start(); server.join(); }
没你想的那么复杂
一个简单的实现是
1.声明一个静态变量,启动jetty的时候用它握住server引用
public class ServerHandler{
private static HttpServer server=null;
}
创建server时
ServerHandler.server = new Server();
实现一个servlet路径为/webapp/stopserver
在servlet中判断stop=true然后
ServerHandler.server.stop();
为什么不用HandlerCollection,给server设置handler数组进去,在自定义的Handler中加入处理关闭的逻辑,执行的时候如果符合条件就会执行了 8)