home *** CD-ROM | disk | FTP | other *** search
/ Australian Personal Computer 2000 November / APCD25112k.iso / feature / webserv / SAMBAR43.ZIP / _SETUP.1 / javaeng.jar / com / sambar / javaeng / SambarHandler.java < prev    next >
Encoding:
Java Source  |  2000-04-03  |  3.1 KB  |  126 lines

  1. /*
  2. **         Sambar Server JAVA Engine Implementation
  3. **
  4. **        Confidential Property of Tod Sambar
  5. **        (c) Copyright Tod Sambar 1999
  6. **        All rights reserved.
  7. */
  8. package com.sambar.javaeng;
  9.  
  10. import java.io.*;
  11. import java.net.*;
  12. import java.util.*;
  13. import javax.servlet.*;
  14. import javax.servlet.http.*;
  15. import com.sambar.javaeng.SambarAPI;
  16.  
  17. public class SambarHandler 
  18. {
  19.     public static long            javaeng;
  20.     public static boolean         traceServlets = false;
  21.     public static SambarContext scontext = null;
  22.     private static Servlet        genericServlet = null;
  23.  
  24.     /* 
  25.     ** Called from the Sambar Server JavaEngine
  26.     */
  27.     public static int init(long jeng)
  28.     {
  29.         javaeng = jeng;
  30.         scontext = new SambarContext(javaeng);
  31.         SambarAPI.logctx(javaeng, "SambarHandler 'init' method called...");
  32.  
  33.         String val = System.getProperty("traceServlets");
  34.         if ((val != null) && (val.equalsIgnoreCase("true")))
  35.             traceServlets = true;
  36.  
  37.         // Generic startup servlet specified?
  38.         String name = SambarAPI.getGenericServlet(jeng);
  39.         if (name != null)
  40.         {
  41.             try 
  42.             {
  43.                 genericServlet = scontext.getServlet(name, false);
  44.                 if (genericServlet == null)
  45.                 {
  46.                     SambarAPI.logctx(jeng, 
  47.                         "GenericServlet '" + name + "' not found...");
  48.                     return SambarAPI.FAIL;
  49.                 }
  50.             }
  51.             catch(Exception ex) 
  52.             {
  53.                 SambarAPI.logctx(jeng, 
  54.                     "GenericServlet '" + name + "' not found - " +
  55.                     ex.toString());
  56.                 return SambarAPI.FAIL;
  57.             }
  58.  
  59.             // service() not called on this GenericServlet
  60.         }
  61.  
  62.         return SambarAPI.SUCCEED;
  63.     }
  64.  
  65.     public static void exit(long jeng)
  66.     {
  67.         String name = SambarAPI.getGenericServlet(jeng);
  68.         if (name != null)
  69.             scontext.destroyServlet(name);
  70.  
  71.         scontext.destroyServlets();
  72.         SambarAPI.logctx(jeng, "SambarHandler 'exit' method called...");
  73.     }
  74.  
  75.     public static int handler(long req) 
  76.     {
  77.         String name = SambarAPI.getServletName(req);
  78.  
  79.         if (traceServlets)
  80.             SambarAPI.log(req, "Servlet " + name + " being called...");
  81.  
  82.         Servlet servlet;
  83.         SambarConnection sconn = new SambarConnection(req, scontext);
  84.  
  85.         try 
  86.         {
  87.             servlet = scontext.getServlet(name, true);
  88.             if (servlet == null)
  89.             {
  90.                 SambarAPI.log(req, "Servlet " + name + " not found...");
  91.                 sconn.sendError(HttpServletResponse.SC_NOT_FOUND, 
  92.                     "Servlet " + name + " not found...");
  93.                 sconn.close();
  94.                 return SambarAPI.FAIL;
  95.             }
  96.         }
  97.         catch(Exception ex) 
  98.         {
  99.             SambarAPI.log(req, "Servlet " + name + " not found - " +
  100.                 ex.toString());
  101.             sconn.sendError(HttpServletResponse.SC_NOT_FOUND, 
  102.                 "Servlet " + name + " not found...");
  103.             sconn.close();
  104.             return SambarAPI.FAIL;
  105.         }
  106.  
  107.         try 
  108.         {
  109.             servlet.service((ServletRequest)sconn, (ServletResponse)sconn);
  110.         }
  111.         catch(Exception ex) 
  112.         {
  113.             SambarAPI.log(req, "Servlet " + name + " failed with execption - " +
  114.                 ex.toString());
  115.             sconn.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, 
  116.                 "Servlet " + name + " raised execption - " + ex.toString());
  117.             sconn.close();
  118.             scontext.destroyServlet(name);
  119.             return SambarAPI.FAIL;
  120.         }
  121.  
  122.         sconn.close();
  123.         return SambarAPI.SUCCEED;
  124.       }
  125. }
  126.