X-Git-Url: http://dolda2000.com/gitweb/?p=jsvc.git;a=blobdiff_plain;f=src%2Fdolda%2Fjsvc%2Fj2ee%2FJ2eeContext.java;h=c6e09dfaf524f7e84853cd5622b9d387082c5063;hp=5409b8c066e18c5d372e99c1e0b3677538ce9a2b;hb=b1488beee36000cffb89e64787b8280404ba8c6b;hpb=4b8346e1aad3c58196f8d4dadf9da6726f66f5f4 diff --git a/src/dolda/jsvc/j2ee/J2eeContext.java b/src/dolda/jsvc/j2ee/J2eeContext.java index 5409b8c..c6e09df 100644 --- a/src/dolda/jsvc/j2ee/J2eeContext.java +++ b/src/dolda/jsvc/j2ee/J2eeContext.java @@ -4,17 +4,60 @@ import dolda.jsvc.*; import dolda.jsvc.util.*; import javax.servlet.*; import javax.servlet.http.*; +import java.util.*; +import java.io.*; public class J2eeContext implements ServerContext { - private ServletConfig cfg; - private long ctime; + private final ServletConfig sc; + private final long ctime; + private final Properties config; - J2eeContext(ServletConfig cfg) { - this.cfg = cfg; + J2eeContext(ServletConfig sc) { + this.sc = sc; this.ctime = System.currentTimeMillis(); + config = readconfig(sc); + } + + private static void loadprops(Properties props, File pfile) { + if(!pfile.exists()) + return; + try { + InputStream in = new FileInputStream(pfile); + try { + props.load(in); + } finally { + in.close(); + } + } catch(IOException e) { + throw(new RuntimeException(e)); + } + } + + private static Properties readconfig(ServletConfig sc) { + /* This only works on Tomcat now, but that's because I've no + * idea how other J2EE servers work. I don't even know if they + * _have_ any reasonable place to put configuration and + * storage. */ + Properties cfg = new Properties(); + String basename = System.getProperty("catalina.base"); + if(basename != null) { + File base = new File(basename); + cfg.put("jsvc.storage", new File(new File(base, "work"), "jsvc").getPath()); + File cdir = new File(base, "conf"); + loadprops(cfg, new File(cdir, "jsvc.properties")); + } + return(cfg); } public long starttime() { return(ctime); } + + public Properties config() { + return(config); + } + + public ServletConfig j2eeconfig() { + return(sc); + } }