/*
* Copyright 2006-2008 Sxip Identity Corporation
*/
package org.openid4java.samples;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import org.apache.log4j.NDC;
public abstract class HttpServletSupport extends HttpServlet
{
protected static final long serialVersionUID = 1L;
protected static Exception lastException;
protected static int count_;
protected Logger logger_;
public HttpServletSupport()
{
logger_ = Logger.getLogger(getClass());
}
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
{
count_++;
String ndcName = getClass().getName();
ndcName = ndcName.substring(ndcName.lastIndexOf('.')+1);
NDC.push(ndcName);
NDC.push("call-" + count_);
logger_.info("begin onService");
try
{
onService(req, resp);
}
catch (Exception exc)
{
lastException = exc;
resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
}
finally
{
logger_.info("end onService");
NDC.pop();
NDC.pop();
}
}
protected abstract void onService(HttpServletRequest req, HttpServletResponse resp) throws Exception;
}