# HG changeset patch # User robcast # Date 1298156571 -3600 # Node ID d811204ce5a471466ae3a3ce757616deeb9a16ad # Parent 5591163f47ee2c2cb0e8ec3e090fb716a6552b22 Initialiser is now a ServletContextListener (doesn't need web.xml). diff -r 5591163f47ee -r d811204ce5a4 client/digitallibrary/WEB-INF/web.xml --- a/client/digitallibrary/WEB-INF/web.xml Sat Feb 19 22:59:53 2011 +0100 +++ b/client/digitallibrary/WEB-INF/web.xml Sun Feb 20 00:02:51 2011 +0100 @@ -12,19 +12,6 @@ This is the web frontend of the Digital Document Library. - - - - Initialiser - - - digilib.servlet.Initialiser - - - - 1 - - diff -r 5591163f47ee -r d811204ce5a4 servlet/src/digilib/servlet/DigilibConfiguration.java --- a/servlet/src/digilib/servlet/DigilibConfiguration.java Sat Feb 19 22:59:53 2011 +0100 +++ b/servlet/src/digilib/servlet/DigilibConfiguration.java Sun Feb 20 00:02:51 2011 +0100 @@ -27,6 +27,7 @@ import java.util.Map.Entry; import javax.servlet.ServletConfig; +import javax.servlet.ServletContext; import javax.servlet.ServletException; import org.apache.log4j.BasicConfigurator; @@ -182,7 +183,7 @@ * * @see readConfig() */ - public DigilibConfiguration(ServletConfig c) throws Exception { + public DigilibConfiguration(ServletContext c) throws Exception { this(); readConfig(c); } @@ -192,7 +193,7 @@ * or file digilib-config.xml */ @SuppressWarnings("unchecked") - public void readConfig(ServletConfig c) throws Exception { + public void readConfig(ServletContext c) throws Exception { /* * Get config file name. The file name is first looked for as an init @@ -215,7 +216,7 @@ XMLListLoader lilo = new XMLListLoader("digilib-config", "parameter", "name", "value"); // read config file into HashMap - Map confTable = lilo.loadURL(f.toURL().toString()); + Map confTable = lilo.loadURL(f.toString()); // set config file path parameter setValue("servlet.config.file", f.getCanonicalPath()); diff -r 5591163f47ee -r d811204ce5a4 servlet/src/digilib/servlet/Initialiser.java --- a/servlet/src/digilib/servlet/Initialiser.java Sat Feb 19 22:59:53 2011 +0100 +++ b/servlet/src/digilib/servlet/Initialiser.java Sun Feb 20 00:02:51 2011 +0100 @@ -24,10 +24,10 @@ import java.io.OutputStream; import java.util.List; -import javax.servlet.ServletConfig; import javax.servlet.ServletContext; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; +import javax.servlet.ServletContextEvent; +import javax.servlet.ServletContextListener; +import javax.servlet.annotation.WebListener; import org.apache.log4j.Logger; import org.apache.log4j.xml.DOMConfigurator; @@ -41,16 +41,17 @@ import digilib.util.DigilibJobCenter; /** - * Singleton initalisation servlet for setup tasks and resources. + * Singleton initalisation listener for setup tasks and resources. * * @author casties * */ -@SuppressWarnings("serial") -public class Initialiser extends HttpServlet { +@WebListener +public class Initialiser implements ServletContextListener { + /** servlet version */ - public static final String version = "0.2"; + public static final String version = "0.3"; /** gengeral logger for this class */ private static Logger logger = Logger.getLogger("digilib.init"); @@ -72,24 +73,19 @@ /** * Initialisation on first run. - * - * @see javax.servlet.Servlet#init(javax.servlet.ServletConfig) */ - public void init(ServletConfig config) throws ServletException { - super.init(config); + public void contextInitialized(ServletContextEvent cte) { + ServletContext context = cte.getServletContext(); - System.out - .println("***** Digital Image Library Initialisation Servlet (version " + System.out.println("***** Digital Image Library Initialiser (version " + version + ") *****"); - // get our ServletContext - ServletContext context = config.getServletContext(); // see if there is a Configuration instance dlConfig = (DigilibConfiguration) context.getAttribute("digilib.servlet.configuration"); if (dlConfig == null) { // create new Configuration try { - dlConfig = new DigilibConfiguration(config); + dlConfig = new DigilibConfiguration(context); /* * further initialization @@ -97,12 +93,12 @@ // set up the logger File logConf = ServletOps.getConfigFile((File) dlConfig - .getValue("log-config-file"), config); + .getValue("log-config-file"), context); DOMConfigurator.configure(logConf.getAbsolutePath()); dlConfig.setValue("log-config-file", logConf); // say hello in the log file logger - .info("***** Digital Image Library Initialisation Servlet (version " + .info("***** Digital Image Library Initialiser (version " + version + ") *****"); // directory cache String[] bd = (String[]) dlConfig.getValue("basedir-list"); @@ -110,7 +106,7 @@ if (dlConfig.getAsBoolean("use-mapping")) { // with mapping file File mapConf = ServletOps.getConfigFile((File) dlConfig - .getValue("mapping-file"), config); + .getValue("mapping-file"), context); dirCache = new AliasingDocuDirCache(bd, fcs, mapConf, dlConfig); dlConfig.setValue("mapping-file", mapConf); @@ -125,7 +121,7 @@ //authOp = new DBAuthOpsImpl(util); // XML version File authConf = ServletOps.getConfigFile((File) dlConfig - .getValue("auth-file"), config); + .getValue("auth-file"), context); AuthOps authOp = new XMLAuthOps(authConf); dlConfig.setValue("servlet.auth.op", authOp); dlConfig.setValue("auth-file", authConf); @@ -152,22 +148,20 @@ context.setAttribute("digilib.servlet.configuration", dlConfig); } catch (Exception e) { - throw new ServletException(e); + logger.error("Error in initialisation: ", e); } } else { // say hello in the log file - logger - .info("***** Digital Image Library Initialisation Servlet (version " + logger.info("***** Digital Image Library Initialisation Servlet (version " + version + ") *****"); logger.warn("Already initialised!"); } } /** clean up local resources - * @see javax.servlet.GenericServlet#destroy() + * */ - @Override - public void destroy() { + public void contextDestroyed(ServletContextEvent arg0) { if (dirCache != null) { // shut down dirCache? dirCache = null; @@ -196,7 +190,6 @@ logger.error("Still running threads when shutting down PDF-image job queue: "+nrj); } } - super.destroy(); } } diff -r 5591163f47ee -r d811204ce5a4 servlet/src/digilib/servlet/Scaler.java --- a/servlet/src/digilib/servlet/Scaler.java Sat Feb 19 22:59:53 2011 +0100 +++ b/servlet/src/digilib/servlet/Scaler.java Sun Feb 20 00:02:51 2011 +0100 @@ -31,7 +31,7 @@ private static final long serialVersionUID = 5289386646192471549L; /** digilib servlet version (for all components) */ - public static final String version = "1.9.1a2"; + public static final String version = "1.9.1a3"; /** servlet error codes */ public static enum Error {UNKNOWN, AUTH, FILE, IMAGE}; @@ -95,8 +95,7 @@ // get our ServletContext ServletContext context = config.getServletContext(); // see if there is a Configuration instance - dlConfig = (DigilibConfiguration) context - .getAttribute("digilib.servlet.configuration"); + dlConfig = (DigilibConfiguration) context.getAttribute("digilib.servlet.configuration"); if (dlConfig == null) { // no Configuration throw new ServletException("No Configuration!"); @@ -113,11 +112,11 @@ .getValue("servlet.worker.imageexecutor"); denyImgFile = ServletOps.getFile( - (File) dlConfig.getValue("denied-image"), config); + (File) dlConfig.getValue("denied-image"), context); errorImgFile = ServletOps.getFile( - (File) dlConfig.getValue("error-image"), config); + (File) dlConfig.getValue("error-image"), context); notfoundImgFile = ServletOps.getFile( - (File) dlConfig.getValue("notfound-image"), config); + (File) dlConfig.getValue("notfound-image"), context); sendFileAllowed = dlConfig.getAsBoolean("sendfile-allowed"); } diff -r 5591163f47ee -r d811204ce5a4 servlet/src/digilib/servlet/ServletOps.java --- a/servlet/src/digilib/servlet/ServletOps.java Sat Feb 19 22:59:53 2011 +0100 +++ b/servlet/src/digilib/servlet/ServletOps.java Sun Feb 20 00:02:51 2011 +0100 @@ -28,7 +28,7 @@ import java.io.PrintWriter; import java.util.StringTokenizer; -import javax.servlet.ServletConfig; +import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServletResponse; @@ -72,11 +72,11 @@ * @param sc * @return */ - public static File getFile(File f, ServletConfig sc) { + public static File getFile(File f, ServletContext sc) { // is the filename absolute? if (!f.isAbsolute()) { // relative path -> use getRealPath to resolve in WEB-INF - String fn = sc.getServletContext().getRealPath(f.getPath()); + String fn = sc.getRealPath(f.getPath()); f = new File(fn); } return f; @@ -92,12 +92,12 @@ * @param sc * @return */ - public static String getFile(String filename, ServletConfig sc) { + public static String getFile(String filename, ServletContext sc) { File f = new File(filename); // is the filename absolute? if (!f.isAbsolute()) { // relative path -> use getRealPath to resolve in WEB-INF - filename = sc.getServletContext().getRealPath(filename); + filename = sc.getRealPath(filename); } return filename; } @@ -112,7 +112,7 @@ * @param sc * @return */ - public static File getConfigFile(File f, ServletConfig sc) { + public static File getConfigFile(File f, ServletContext sc) { String fn = f.getPath(); // is the filename absolute? if (f.isAbsolute()) { @@ -126,7 +126,7 @@ } } // relative path -> use getRealPath to resolve in WEB-INF - String newfn = sc.getServletContext().getRealPath("WEB-INF/" + fn); + String newfn = sc.getRealPath("WEB-INF/" + fn); f = new File(newfn); return f; } @@ -141,13 +141,12 @@ * @param sc * @return */ - public static String getConfigFile(String filename, ServletConfig sc) { + public static String getConfigFile(String filename, ServletContext sc) { File f = new File(filename); // is the filename absolute? if (!f.isAbsolute()) { // relative path -> use getRealPath to resolve in WEB-INF - filename = sc.getServletContext() - .getRealPath("WEB-INF/" + filename); + filename = sc.getRealPath("WEB-INF/" + filename); } return filename; }