1
votes

We are trying to take the environment specific configuration settings out of our war files, so we can deploy the same war file to dev/test/prod tomcat servers and not have to change the contents of the war config file.

When I move the META-INF/context.xml for the database connection to the conf/server.xml the database connection no longer works, with the following error, anyone know why this would be?

server.xml:

<GlobalNamingResources>
    ....
    <Resource
            url="jdbc:oracle:thin:@hostname:1521/something"
            username="username"
            name="jdbc/mydb"
            password="password"
            auth="Container"
            driverClassName="oracle.jdbc.driver.OracleDriver"
            maxActive="5" maxIdle="2" maxWait="10000"
            removeAbandoned="true"
            type="javax.sql.DataSource"
            />
</GlobalNamingResources>

The error is as follows:

INFO: Deploying web application directory ROOT
Problem reading system configuration. Cannot create JDBC driver of class '' for connect URL 'null' (java.io.IOException: Cannot create JDBC driver of class '' for connect URL 'null')
java.io.IOException: Cannot create JDBC driver of class '' for connect URL 'null'
    at au.edu.unimelb.helper.SettingManager.loadSettings(SettingManager.java:212)
    at au.edu.unimelb.helper.SettingManager.<init>(SettingManager.java:53)

(And yes the odjbc6.jar file is in $TOMCAT_HOME/lib/)

2
This is a wrapped exception. You need to look further down in the stacktrace for the last "Caused by" or "Root cause" part. It contains the answer to your problem.BalusC
The rest of the exception was not helpful to anyone (:Jay

2 Answers

4
votes

Finally worked it out, the tomcat documentation was slightly misleading. You can put the contents of your META-INF/context.xml straight into $TOMCAT_HOME/conf/context.xml and it works just fine.

0
votes

There might be missing a <ResourceLink> in context.xml (either in the web application's META-INF/context.xml or in $TOMCAT_HOME/conf/context.xml, like so:

        <ResourceLink name="jdbc/mydb"
              type="javax.sql.DataSource"
              global="jdbc/mydb"/>