diff options
Diffstat (limited to 'org/madore/damlengine/WeblogDatabaseConnection.java')
-rw-r--r-- | org/madore/damlengine/WeblogDatabaseConnection.java | 84 |
1 files changed, 50 insertions, 34 deletions
diff --git a/org/madore/damlengine/WeblogDatabaseConnection.java b/org/madore/damlengine/WeblogDatabaseConnection.java index 900f3a0..16d0973 100644 --- a/org/madore/damlengine/WeblogDatabaseConnection.java +++ b/org/madore/damlengine/WeblogDatabaseConnection.java @@ -15,73 +15,88 @@ public final class WeblogDatabaseConnection { throw new AssertionError("WeblogDatabaseConnection cannot be instantiated"); } - public static Connection conn; + public static ThreadLocal<Connection> pconn + = new ThreadLocal<Connection>(); public static Connection getConnection() throws SQLException { + Connection conn = pconn.get(); if ( conn == null ) { - String dbHost = System.getenv("DAMLENGINE_PGHOST"); + String dbHost = null; + if ( ! DamlEngine.runAsServlet ) + dbHost = System.getenv("DAMLENGINE_PGHOST"); if ( dbHost == null ) dbHost = DamlEngine.appProps.getProperty("pghost"); - if ( dbHost == null ) + if ( dbHost == null && ! DamlEngine.runAsServlet ) dbHost = System.getenv("PGHOST"); if ( dbHost == null ) dbHost = "localhost"; - String dbPort = System.getenv("DAMLENGINE_PGPORT"); + String dbPort = null; + if ( ! DamlEngine.runAsServlet ) + dbPort = System.getenv("DAMLENGINE_PGPORT"); if ( dbPort == null ) dbPort = DamlEngine.appProps.getProperty("pgport"); - if ( dbPort == null ) + if ( dbPort == null && ! DamlEngine.runAsServlet ) dbPort = System.getenv("PGPORT"); if ( dbPort == null ) dbPort = "5432"; - String dbName = System.getenv("DAMLENGINE_DBNAME"); + String dbName = null; + if ( ! DamlEngine.runAsServlet ) + dbName = System.getenv("DAMLENGINE_DBNAME"); if ( dbName == null ) dbName = DamlEngine.appProps.getProperty("dbname"); if ( dbName == null ) dbName = "weblog"; - String dbUser = System.getenv("DAMLENGINE_PGUSER"); + String dbUser = null; + if ( ! DamlEngine.runAsServlet ) + dbUser = System.getenv("DAMLENGINE_PGUSER"); if ( dbUser == null ) dbUser = DamlEngine.appProps.getProperty("pguser"); - if ( dbUser == null ) + if ( dbUser == null && ! DamlEngine.runAsServlet ) dbUser = System.getenv("PGUSER"); - if ( dbUser == null ) + if ( dbUser == null && ! DamlEngine.runAsServlet ) dbUser = System.getenv("USER"); if ( dbUser == null ) dbUser = System.getProperty("user.name"); if ( dbUser == null ) dbUser = dbName; - String dbPass = System.getenv("DAMLENGINE_PGPASSWORD"); + String dbPass = null; + if ( ! DamlEngine.runAsServlet ) + dbPass = System.getenv("DAMLENGINE_PGPASSWORD"); if ( dbPass == null ) dbPass = DamlEngine.appProps.getProperty("pgpassword"); - if ( dbPass == null ) + if ( dbPass == null && ! DamlEngine.runAsServlet ) dbPass = System.getenv("PGPASSWORD"); - if ( dbPass == null ) - try { - String dbPassFile = System.getenv("DAMLENGINE_PGPASSFILE"); - if ( dbPassFile == null ) - dbPassFile = DamlEngine.appProps.getProperty("pgpassfile"); - if ( dbPassFile == null ) - dbPassFile = System.getenv("PGPASSFILE"); - if ( dbPassFile == null ) - dbPassFile = System.getProperty("user.home") - + "/.pgpass"; + if ( dbPass == null ) { + String dbPassFile = null; + if ( ! DamlEngine.runAsServlet ) + dbPassFile = System.getenv("DAMLENGINE_PGPASSFILE"); + if ( dbPassFile == null ) + dbPassFile = DamlEngine.appProps.getProperty("pgpassfile"); + if ( dbPassFile == null && ! DamlEngine.runAsServlet ) + dbPassFile = System.getenv("PGPASSFILE"); + if ( dbPassFile == null && ! DamlEngine.runAsServlet ) + dbPassFile = System.getProperty("user.home") + + "/.pgpass"; + if ( dbPassFile != null ) try { BufferedReader buf = new BufferedReader(new InputStreamReader(new FileInputStream(dbPassFile))); - String line; - while ( ( line = buf.readLine() ) != null ) { - String[] elts = line.split(":"); - if ( elts.length == 5 - && ( elts[0].equals("*") || elts[0].equals(dbHost) ) - && ( elts[1].equals("*") || elts[1].equals(dbPort) ) - && ( elts[2].equals("*") || elts[2].equals(dbName) ) - && ( elts[3].equals("*") || elts[3].equals(dbUser) ) ) { - dbPass = elts[4]; - break; + String line; + while ( ( line = buf.readLine() ) != null ) { + String[] elts = line.split(":"); + if ( elts.length == 5 + && ( elts[0].equals("*") || elts[0].equals(dbHost) ) + && ( elts[1].equals("*") || elts[1].equals(dbPort) ) + && ( elts[2].equals("*") || elts[2].equals(dbName) ) + && ( elts[3].equals("*") || elts[3].equals(dbUser) ) ) { + dbPass = elts[4]; + break; + } } + } catch (IOException e) { + // Ignore } - } catch (IOException e) { - // Ignore - } + } if ( dbPass == null ) dbPass = ""; final String dbUrl @@ -93,6 +108,7 @@ public final class WeblogDatabaseConnection { dbProps.setProperty("sslfactory", "org.postgresql.ssl.NonValidatingFactory"); conn = (new Driver()).connect(dbUrl, dbProps); conn.createStatement().execute("SET TIME ZONE 0"); + pconn.set(conn); } return conn; } |