home *** CD-ROM | disk | FTP | other *** search
Java Source | 2000-04-03 | 3.1 KB | 126 lines |
- /*
- ** Sambar Server JAVA Engine Implementation
- **
- ** Confidential Property of Tod Sambar
- ** (c) Copyright Tod Sambar 1999
- ** All rights reserved.
- */
- package com.sambar.javaeng;
-
- import java.io.*;
- import java.net.*;
- import java.util.*;
- import javax.servlet.*;
- import javax.servlet.http.*;
- import com.sambar.javaeng.SambarAPI;
-
- public class SambarHandler
- {
- public static long javaeng;
- public static boolean traceServlets = false;
- public static SambarContext scontext = null;
- private static Servlet genericServlet = null;
-
- /*
- ** Called from the Sambar Server JavaEngine
- */
- public static int init(long jeng)
- {
- javaeng = jeng;
- scontext = new SambarContext(javaeng);
- SambarAPI.logctx(javaeng, "SambarHandler 'init' method called...");
-
- String val = System.getProperty("traceServlets");
- if ((val != null) && (val.equalsIgnoreCase("true")))
- traceServlets = true;
-
- // Generic startup servlet specified?
- String name = SambarAPI.getGenericServlet(jeng);
- if (name != null)
- {
- try
- {
- genericServlet = scontext.getServlet(name, false);
- if (genericServlet == null)
- {
- SambarAPI.logctx(jeng,
- "GenericServlet '" + name + "' not found...");
- return SambarAPI.FAIL;
- }
- }
- catch(Exception ex)
- {
- SambarAPI.logctx(jeng,
- "GenericServlet '" + name + "' not found - " +
- ex.toString());
- return SambarAPI.FAIL;
- }
-
- // service() not called on this GenericServlet
- }
-
- return SambarAPI.SUCCEED;
- }
-
- public static void exit(long jeng)
- {
- String name = SambarAPI.getGenericServlet(jeng);
- if (name != null)
- scontext.destroyServlet(name);
-
- scontext.destroyServlets();
- SambarAPI.logctx(jeng, "SambarHandler 'exit' method called...");
- }
-
- public static int handler(long req)
- {
- String name = SambarAPI.getServletName(req);
-
- if (traceServlets)
- SambarAPI.log(req, "Servlet " + name + " being called...");
-
- Servlet servlet;
- SambarConnection sconn = new SambarConnection(req, scontext);
-
- try
- {
- servlet = scontext.getServlet(name, true);
- if (servlet == null)
- {
- SambarAPI.log(req, "Servlet " + name + " not found...");
- sconn.sendError(HttpServletResponse.SC_NOT_FOUND,
- "Servlet " + name + " not found...");
- sconn.close();
- return SambarAPI.FAIL;
- }
- }
- catch(Exception ex)
- {
- SambarAPI.log(req, "Servlet " + name + " not found - " +
- ex.toString());
- sconn.sendError(HttpServletResponse.SC_NOT_FOUND,
- "Servlet " + name + " not found...");
- sconn.close();
- return SambarAPI.FAIL;
- }
-
- try
- {
- servlet.service((ServletRequest)sconn, (ServletResponse)sconn);
- }
- catch(Exception ex)
- {
- SambarAPI.log(req, "Servlet " + name + " failed with execption - " +
- ex.toString());
- sconn.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
- "Servlet " + name + " raised execption - " + ex.toString());
- sconn.close();
- scontext.destroyServlet(name);
- return SambarAPI.FAIL;
- }
-
- sconn.close();
- return SambarAPI.SUCCEED;
- }
- }
-