我想創建簡單的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