package org.oddjob.webapp.servlets; import java.io.File; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletConfig; import javax.servlet.ServletContext; 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.oddjob.Oddjob; import org.oddjob.webapp.WebappConstants; /** * This is the Oddjob servlet that starts Oddjob running on * a separate thread within a Servlet Container. This is * slightly frowned upon in J2EE circles but most containers * allow it. * * @author Rob Gordon. */ public class OddjobServlet extends HttpServlet { private static final long serialVersionUID = 20051103; private static final Logger logger = Logger.getLogger(OddjobServlet.class); /** The oddjob instance */ private Oddjob oddjob; /** The thread that is running it. */ private Thread thread; /* * (non-Javadoc) * @see javax.servlet.Servlet#init(javax.servlet.ServletConfig) */ public void init(ServletConfig config) throws ServletException { oddjob = new Oddjob(); ServletContext context = config.getServletContext(); String servletContextPath = context.getRealPath("/"); String oddjobFile = config.getServletContext().getInitParameter( WebappConstants.FILE_PARAM); if (oddjobFile == null) { oddjobFile = config.getInitParameter( WebappConstants.FILE_PARAM); } if (oddjobFile == null) { oddjobFile = servletContextPath + "/WEB-INF/" + "oddjob.xml"; } else { oddjobFile = servletContextPath + "/" + oddjobFile; } oddjob.setFile(new File(oddjobFile)); String name = context.getInitParameter( WebappConstants.NAME_PARAM); if (name == null) { name = config.getInitParameter( WebappConstants.NAME_PARAM); } if (name == null) { name = "Oddjob"; } oddjob.setName(name); context.setAttribute(WebappConstants.ODDJOB_INSTANCE, oddjob); thread = new Thread(oddjob); thread.start(); } /* * (non-Javadoc) * @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) */ public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/plain"); PrintWriter out = res.getWriter(); out.println("Oddjob"); } /* * (non-Javadoc) * @see javax.servlet.Servlet#destroy() */ public void destroy() { logger.debug("Destroying Oddjob."); oddjob.destroy(); } }