我想创建简单的Java HTTP服务器(当然,我也是))),但是我需要控制线程池和TCP会话。我想在启动时预先创建所有需要的线程,还需要关闭来自HTTP处理程序的TCP会话。Jetty线程池和sun.HttpServer会话
第一个我试图嵌入码头。码头8服务器类有setThreadPool方法,虽然它的线程池比标准(例如Jetty的的ThreadPoolExecutor没有prestartAllCoreThreads那么强大的(我不能使用Java的的ThreadPoolExecutor,可以吗?)。
但似乎我可以
HttpSession session = request.getSession();
session.invalidate();
但码头9 服务器从servlet的处理程序关闭TCP会话现在已经没有setThreadPool方法。它是否迁移到其他地方?
第二个我试着用com.sun.net.httpserver.HttpServer。它的伟大工程与线程池
ThreadPoolExecutor thp = (ThreadPoolExecutor) Executors.newCachedThreadPool();
thp.setMaximumPoolSize(1000);
thp.setCorePoolSize(1000);
thp.prestartAllCoreThreads();
server.setExecutor(thp);
但在TCP连接关闭(HttpExchange类不提供任何方法)没有控制权。
所以实际上我需要以某种方式结合来自Sun HttpServer的线程控制和来自Jetty的会话控制?
在Jetty 9中控制ThreadPool也不错。
另外,如果可能的话,我宁愿不要使用Jetty等第三方组件。
谢谢。
“我宁愿不使用第三方组件”。您正在使用'com.sun。*',这将不能保证在将来出现在JVM中。 JVM只承诺'java。*'和'javax。*'存在(Oracle,Java的新所有者和管理者,现在已经改变并删除了Sun的引用)。您希望使用'com.sun.net.httpserver.HttpServer'很有可能在将来需要第三方下载旧版jar。可能没有更新。 – 2013-04-30 14:13:49
javax是否包含自己的“标准”servlet容器/ http服务器? – 2013-04-30 14:26:21