H
Hank Barta
I've been working unsuccessfully to get a mysql connection from a
JSP running on tomcat 4. the relevant portion of code is:
{
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource) envCtx.lookup("jdbc/MusicPlayer"); // line 139
conn = ds.getConnection( );
conn.setCatalog("MusicPlayer");
}
My web.xml is
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<resource-ref>
<description>
Music Player database
</description>
<res-ref-name>
jdbc/MusicPlayer
</res-ref-name>
<res-type>
javax.sql.DataSource
</res-type>
<res-auth>
Container
</res-auth>
</resource-ref>
</web-app>
And I've added the following to server.xml:
<Context path="/myapp" docBase="myapp">
<Resource name="jdbc/MusicPlayer"
auth="Container"
type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/MusicPlayer">
<parameter>
<name>driverClassName</name>
<value>com.mysql.jdbc.Driver</value>
</parameter>
<parameter>
<name>driverName</name>
<value>jdbc:mysql://localhost:3306/MusicPlayer</value>
</parameter>
<parameter>
<name>user</name>
<value>player</value>
</parameter>
<parameter>
<name>password</name>
<value>reyalp</value>
</parameter>
</ResourceParams>
</Context>
When I execute the JSP, the exception I get (copying from my call
on) is:
root cause
javax.naming.NamingException: Cannot create resource instance
at org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:167)
at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:301)
at org.apache.naming.NamingContext.lookup(NamingContext.java:834)
at org.apache.naming.NamingContext.lookup(NamingContext.java:181)
at org.apache.naming.NamingContext.lookup(NamingContext.java:822)
at org.apache.naming.NamingContext.lookup(NamingContext.java:194)
at com.hankbarta.music.MusicPlayerDB.(MusicPlayerDB.java:139)
JSP running on tomcat 4. the relevant portion of code is:
{
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource) envCtx.lookup("jdbc/MusicPlayer"); // line 139
conn = ds.getConnection( );
conn.setCatalog("MusicPlayer");
}
My web.xml is
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<resource-ref>
<description>
Music Player database
</description>
<res-ref-name>
jdbc/MusicPlayer
</res-ref-name>
<res-type>
javax.sql.DataSource
</res-type>
<res-auth>
Container
</res-auth>
</resource-ref>
</web-app>
And I've added the following to server.xml:
<Context path="/myapp" docBase="myapp">
<Resource name="jdbc/MusicPlayer"
auth="Container"
type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/MusicPlayer">
<parameter>
<name>driverClassName</name>
<value>com.mysql.jdbc.Driver</value>
</parameter>
<parameter>
<name>driverName</name>
<value>jdbc:mysql://localhost:3306/MusicPlayer</value>
</parameter>
<parameter>
<name>user</name>
<value>player</value>
</parameter>
<parameter>
<name>password</name>
<value>reyalp</value>
</parameter>
</ResourceParams>
</Context>
When I execute the JSP, the exception I get (copying from my call
on) is:
root cause
javax.naming.NamingException: Cannot create resource instance
at org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:167)
at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:301)
at org.apache.naming.NamingContext.lookup(NamingContext.java:834)
at org.apache.naming.NamingContext.lookup(NamingContext.java:181)
at org.apache.naming.NamingContext.lookup(NamingContext.java:822)
at org.apache.naming.NamingContext.lookup(NamingContext.java:194)
at com.hankbarta.music.MusicPlayerDB.(MusicPlayerDB.java:139)