File tree Expand file tree Collapse file tree 1 file changed +12
-1
lines changed Expand file tree Collapse file tree 1 file changed +12
-1
lines changed Original file line number Diff line number Diff line change 1515            [clojure.string :as  str])
1616  (:import  (com.sun.net.httpserver  HttpExchange HttpHandler HttpServer)
1717           java.io.File
18+            (java.util.concurrent  Executors ThreadFactory)
1819           (java.net  HttpURLConnection InetSocketAddress URL)))
1920
2021(defn  get-extension  [^String filename]
8283    (.createContext  " /"   (proxy  [HttpHandler] []
8384                          (handle  [^HttpExchange exchange]
8485                            (root-handler  exchange handler))))
85-     (.setExecutor  nil )
86+     ; ; Specify executor that will produce a custom thread for the HTTP server:
87+     ; ; - thread should be daemon to prevent server from stalling the shutdown
88+     ; ; - thread should interit Clojure's classloader so that it sees resources
89+     ; ;   that were loaded in dynamically
90+     (.setExecutor  (Executors/newSingleThreadExecutor 
91+                    (let  [cl (clojure.lang.RT/baseLoader )]
92+                      (reify  ThreadFactory
93+                        (newThread  [_ r]
94+                          (doto  (Thread.  r)
95+                            (.setContextClassLoader  cl)
96+                            (.setDaemon  true )))))))
8697    (.start )))
8798
8899(defn  get-address  [^HttpServer server]
    
 
   
 
     
   
   
          
     
  
    
     
 
    
      
     
 
     
    You can’t perform that action at this time.
  
 
    
  
     
    
      
        
     
 
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments