I've been beating my head against the wall on and off for a week now and
just can't seem to get the hand of JNDI DataSources with Tomcat. Everything
I try seems to end with "javax.naming.NamingException: Cannot create
resource instance."

Though I've also done a fair amount of research on this I haven't found any
clear answers as to what exactly causes this error, esp. when using Tomcat.

Thanks for any ideas,

Ken


The entries in server.xml, under <GlobalNamingResources> are:

<Resource name="jdbc/CheckUsers" auth="Container"
type="javax.sql.DataSource"/>
    <ResourceParams name="jdbc/CheckUsers">
        <parameter>
                <name>driverClassName</name>
                <value>com.mysql.jdbc.Driver</value>
        </parameter>
        <parameter>
                <name>url</name>
 
<value>jdbc:mysql://inqtomcat/photo?autoReconnect=true</value>
        </parameter>
        <parameter>
                <name>username</name>
                <value>xxx</value>
        </parameter>
        <parameter>
                <name>password</name>
                <value>xxx</value>
        </parameter>
        <parameter>
                <name>maxActive</name>
                <value>10</value>
        </parameter>
        <parameter>
                <name>maxIdle</name>
                <value>30000</value>
        </parameter>
        <parameter>
                <name>maxWait</name>
                <value>100</value>
        </parameter>
        <parameter>
                <name>factory</name>
 
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
        </parameter>
    </ResourceParams>
</Resource>

In my web.xml I have:
<resource-ref>
                <res-ref-name>jdbc/CheckUsers</res-ref-name>
                <res-type>javax.sqlDataSource</res-type>
                <res-auth>Container</res-auth>
</resource-ref>

And in the calling code I have:

private DataSource ds;
Context initContext;
Context env;

try {
        initContext = new InitialContext();
        env = (Context)initContext.lookup("java:comp/env");
        ds = (DataSource) env.lookup("jdbc/CheckUsers");
} catch ( NamingException ne ) {
                logger.info( "Problem setting datasource in setDs using JNDI
and DataSource: " + ne + ".");
} catch ( Exception e ) {
        logger.info( "Problem setting datasource in setDs : " + e + ".");
}

Reply via email to