Skip to Main Content

Java Database Connectivity (JDBC)

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

JNDI DataSource MS SQL and Tomcat 4.1.24

843854Mar 25 2004 — edited Jun 13 2006
I am having trouble connecting to MS SQL using a JNDI DataSource with Tomcat 4.1.24. Note that I have succesfully gotten this to work with Resin using the same Java classes and jsps.

Here is my server.xml, it is being managed by my host, so I have to ask them to make all changse.
<Host name="testdesigner.com" debug="0" appBase="/mount/Server12/web/public_html/BacMan/" unpackWARs="true" autoDeploy="true">
  <Alias>www.testdesigner.com</Alias>
  <Valve className="org.apache.catalina.valves.AccessLogValve"
                directory="/mount/Server12/web/public_html/BacMan/logs" prefix="testdesigner_com_tomcat_access." suffix=".log"
                pattern="common" resolveHosts="false"/>

  <Logger className="org.apache.catalina.logger.FileLogger" directory="/mount/Server12/web/public_html/BacMan/logs" prefix="testdesigner_com_tomcat." suffix=".log" timestamp="true"/>
          	
  <Logger className="org.apache.catalina.logger.SystemErrLogger"
                directory="/mount/Server12/web/public_html/BacMan/logs" prefix="testdesigner_com_tomcat_syserr." suffix=".log" timestamp="true"/>

  <Logger className="org.apache.catalina.logger.SystemOutLogger"
                directory="/mount/Server12/web/public_html/BacMan/logs" prefix="testdesigner_com_tomcat_sysout." suffix=".log"
          	timestamp="true"/>

  <Context path="" docBase="" debug="0" reloadable="true">
    <Loader className="org.apache.catalina.loader.WebappLoader"
           loaderClass="org.apache.catalina.loader.WebappClassLoader" checkInterval="3"/>
		
    <Resource name="jdbc/MSSQL_Tests" type="javax.sql.DataSource" auth="Container">
      <ResourceParams name="jdbc/MSSQL_Tests">
        <parameter>
          <name>user</name>
          <value>*user*</value>
        </parameter>
        <parameter>
          <name>password</name>
          <value>*password*</value>
        </parameter>
        <parameter>
          <name>driverName</name>
          <value>jdbc:microsoft:sqlserver://sqlserver3.loosefoot.com:1433;DatabaseName=tests;ProgramName=TestDesigner</value>
        </parameter>
        <parameter>
          <name>driverClassName</name>
          <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
        </parameter>
      </ResourceParams>
    </Resource>
			
  </Context>

  <Context path="/jakartamanager" debug="0" privileged="true" docBase="/var/tomcat4/server/webapps/manager"/>
      
</Host>
Here is my web.xml
<web-app>
	<display-name>www.testdesigner.com</display-name>

	<resource-ref>
        <description>Resource reference to a factory for java.sql.Connection instances that may be used for talking to a particular database that is configured in the server.xml file.</description>
		<res-ref-name>jdbc/MSSQL_Tests</res-ref-name>
		<res-type>javax.sql.DataSource</res-type>
		<res-auth>Container</res-auth>
	</resource-ref>

</web-app>
Finally here is the error that I am getting. (http://www.testdesigner.com/index.jsp)
It's a null pointer exception when I am trying to run my query. It appears that the lookup is failing.
I am using apache's QueryRunner library (again this works with Resin locally).

I'll include my Java code below:

package net.bacman.database;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.ResultSetHandler;
import org.apache.commons.dbutils.handlers.MapListHandler;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
import java.sql.SQLException;
import java.util.List;

/**
 * Date: Mar 13, 2004
 * Time: 3:10:57 AM
 */
public class Database {

    // Datasources
    private static DataSource MySQLDB_Halo = null;
    private static DataSource MySQLDB_TestForums = null;
    private static DataSource MSSQLDB_Tests = null;

    // Databases
    public static final String MYSQL_HALO_DATABASE = "swella2_Halo";
    public static final String MYSQL_TESTSFORUMS_DATABASE = "TestsForums";
    public static final String MSSQL_TESTS_DATABASE = "Tests";

    // DataSource Lookups
    private static final String MYSQL_HALO_DATASOURCE = "jdbc/MySQL_Halo";
    private static final String MYSQL_TESTSFORUMS_DATASOURCE = "jdbc/MySQL_TestsForums";
    private static final String MSSQL_TESTS_DATASOURCE = "jdbc/MSSQL_Tests";

    static {
        try {
            Context env = (Context) new InitialContext().lookup("java:comp/env");
            MySQLDB_Halo = (DataSource) env.lookup(MYSQL_HALO_DATASOURCE);
            MySQLDB_TestForums = (DataSource) env.lookup(MYSQL_TESTSFORUMS_DATASOURCE);
            MSSQLDB_Tests = (DataSource) env.lookup(MSSQL_TESTS_DATASOURCE);
        } catch (NamingException ne) {
            System.out.println("NamingException: " + ne.getMessage());
        }
    }

    public static List execute(String DB, String query) throws SQLException {
        QueryRunner run = null;

        if (DB == null) {
            throw new IllegalArgumentException("Paramater DB is null!");
        } else if (DB.equals(MYSQL_HALO_DATABASE)) {
            run = new QueryRunner(MySQLDB_Halo);
        } else if (DB.equals(MYSQL_TESTSFORUMS_DATABASE)) {
            run = new QueryRunner(MySQLDB_TestForums);
        } else if (DB.equals(MSSQL_TESTS_DATABASE)) {
            run = new QueryRunner(MSSQLDB_Tests);
        } else {
            throw new IllegalArgumentException("Uknown Database: " + DB);
        }

        ResultSetHandler h = new MapListHandler();
        return (List) run.query(query, h);
    }

}
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Jul 11 2006
Added on Mar 25 2004
23 comments
1,660 views