in app/src/main/java/org/apache/roller/weblogger/business/DatabaseProvider.java [83:153]
public DatabaseProvider() throws StartupException {
String connectionTypeString =
WebloggerConfig.getProperty("database.configurationType");
if ("jdbc".equals(connectionTypeString)) {
type = ConfigurationType.JDBC_PROPERTIES;
}
jndiName = WebloggerConfig.getProperty("database.jndi.name");
jdbcDriverClass = WebloggerConfig.getProperty("database.jdbc.driverClass");
jdbcConnectionURL = WebloggerConfig.getProperty("database.jdbc.connectionURL");
jdbcUsername = WebloggerConfig.getProperty("database.jdbc.username");
jdbcPassword = WebloggerConfig.getProperty("database.jdbc.password");
successMessage("SUCCESS: Got parameters. Using configuration type " + type);
// If we're doing JDBC then attempt to load JDBC driver class
if (getType() == ConfigurationType.JDBC_PROPERTIES) {
successMessage("-- Using JDBC driver class: " + jdbcDriverClass);
successMessage("-- Using JDBC connection URL: " + jdbcConnectionURL);
successMessage("-- Using JDBC username: " + jdbcUsername);
successMessage("-- Using JDBC password: [hidden]");
try {
Class.forName(getJdbcDriverClass());
} catch (ClassNotFoundException ex) {
String errorMsg =
"ERROR: cannot load JDBC driver class [" + getJdbcDriverClass()+ "]. "
+"Likely problem: JDBC driver jar missing from server classpath.";
errorMessage(errorMsg);
throw new StartupException(errorMsg, ex, startupLog);
}
successMessage("SUCCESS: loaded JDBC driver class [" +getJdbcDriverClass()+ "]");
if (getJdbcUsername() != null || getJdbcPassword() != null) {
props = new Properties();
if (getJdbcUsername() != null) {
props.setProperty("user", getJdbcUsername());
}
if (getJdbcPassword() != null) {
props.setProperty("password", getJdbcPassword());
}
}
// Else attempt to locate JNDI datasource
} else {
String name = getFullJndiName();
successMessage("-- Using JNDI datasource name: " + name);
try {
InitialContext ic = new InitialContext();
dataSource = (DataSource)ic.lookup(name);
} catch (NamingException ex) {
String errorMsg =
"ERROR: cannot locate JNDI DataSource [" +name+ "]. "
+"Likely problem: no DataSource or datasource is misconfigured.";
errorMessage(errorMsg);
throw new StartupException(errorMsg, ex, startupLog);
}
successMessage("SUCCESS: located JNDI DataSource [" +name+ "]");
}
// So far so good. Now, can we get a connection?
try {
Connection testcon = getConnection();
testcon.close();
} catch (Exception e) {
String errorMsg =
"ERROR: unable to obtain database connection. "
+"Likely problem: bad connection parameters or database unavailable.";
errorMessage(errorMsg);
throw new StartupException(errorMsg, e, startupLog);
}
}