X-Git-Url: http://dolda2000.com/gitweb/?p=jsvc.git;a=blobdiff_plain;f=src%2Fdolda%2Fjsvc%2Fj2ee%2FServlet.java;h=43726527083ba0fcbeb7eec9e5fca1d2958ddb34;hp=165b0f2e2cfe489515da86777d8430b85e4749c0;hb=c9837b5e87402fa1375fe6d3dd80cb3405edda42;hpb=28aca7f5ccfb69b54ee60e68dbe0a590844b9e97 diff --git a/src/dolda/jsvc/j2ee/Servlet.java b/src/dolda/jsvc/j2ee/Servlet.java index 165b0f2..4372652 100644 --- a/src/dolda/jsvc/j2ee/Servlet.java +++ b/src/dolda/jsvc/j2ee/Servlet.java @@ -8,16 +8,9 @@ import javax.servlet.http.*; import javax.servlet.*; public class Servlet extends HttpServlet { - private Responder root; - private ThreadGroup workers; - private long reqs = 0; + private ThreadContext tg; public void init() throws ServletException { - workers = new ThreadGroup("JSvc worker threads") { - public void uncaughtException(Thread t, Throwable e) { - log("Worker thread terminated with an uncaught exception", e); - } - }; Properties sprop = new Properties(); try { InputStream pi = Servlet.class.getClassLoader().getResourceAsStream("jsvc.properties"); @@ -32,30 +25,19 @@ public class Servlet extends HttpServlet { String clnm = (String)sprop.get("jsvc.bootstrap"); if(clnm == null) throw(new ServletException("No JSvc bootstrapper specified")); + Class bc; try { - Class rc = Class.forName(clnm); - Method cm = rc.getMethod("responder"); - Object resp = cm.invoke(null); - if(!(resp instanceof Responder)) - throw(new ServletException("JSvc bootstrapper did not return a responder")); - root = (Responder)resp; + bc = Class.forName(clnm); } catch(ClassNotFoundException e) { throw(new ServletException("Invalid JSvc bootstrapper specified", e)); - } catch(NoSuchMethodException e) { - throw(new ServletException("Invalid JSvc bootstrapper specified", e)); - } catch(IllegalAccessException e) { - throw(new ServletException("Invalid JSvc bootstrapper specified", e)); - } catch(InvocationTargetException e) { - throw(new ServletException("JSvc bootstrapper failed", e)); } + tg = new ThreadContext(null, "JSvc service", bc); ServletContext ctx = getServletContext(); ctx.setAttribute("jsvc.starttime", System.currentTimeMillis()); } public void destroy() { - workers.interrupt(); - if(root instanceof ContextResponder) - ((ContextResponder)root).destroy(); + tg.shutdown(); } public void service(HttpServletRequest req, HttpServletResponse resp) { @@ -65,9 +47,8 @@ public class Servlet extends HttpServlet { } catch(UnsupportedEncodingException e) { throw(new Error(e)); } - long mynum = reqs++; Request rr = new J2eeRequest(getServletConfig(), req, resp); - RequestThread w = new RequestThread(root, rr, workers, "Worker thread " + mynum); + RequestThread w = tg.respond(rr); w.start(); try { w.join();