I have defined the resource in web.xml as below... and also defined the
datasouce resources under context in server.xml... even then it does not
help.. I get the same error "org.apache.jasper.JasperException: Name
prototypedb is not bound in this Context"
Web.xml
================================================
<web-app>
<description>PrototypeDB Test App</description>
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/prototypedb</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
=======================================================
server.xml
==========
<!-- JNDI datasource setup to connect to MYSQL database-->
<Context path="/PrototypeDBTest" docBase="PrototypeDBTest"
debug="5" reloadable="true" crossContext="true"
useNaming="true">
<Logger className="org.apache.catalina.logger.FileLogger"
prefix="localhost_PrototypeDBTest_log." suffix=".txt"
timestamp="true"/>
<Resource name="jdbc/prototypedb"
auth="Container"
type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/prototypedb">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<!-- Maximum number of dB connections in pool. Make sure you
configure your mysqld max_connections large enough to handle
all of your db connections. Set to 0 for no limit.
-->
<parameter>
<name>maxActive</name>
<value>100</value>
</parameter>
<!-- Maximum number of idle dB connections to retain in pool.
Set to 0 for no limit.
-->
<parameter>
<name>maxIdle</name>
<value>30</value>
</parameter>
<!-- Maximum time to wait for a dB connection to become
available
in ms, in this example 10 seconds. An Exception is thrown if
this timeout is exceeded. Set to -1 to wait indefinitely.
-->
<parameter>
<name>maxWait</name>
<value>10000</value>
</parameter>
<!-- MySQL dB username and password for dB connections -->
<parameter>
<name>username</name>
<value>antonio</value>
</parameter>
<parameter>
<name>password</name>
<value>play</value>
</parameter>
<!-- Class name for mm.mysql JDBC driver -->
<parameter>
<name>driverClassName</name>
<value>org.gjt.mm.mysql.Driver</value>
</parameter>
<!-- The JDBC connection url for connecting to your MySQL dB.
The autoReconnect=true argument to the url makes sure that the
mm.mysql JDBC Driver will automatically reconnect if mysqld
closed the
connection. mysqld by default closes idle connections after 8
hours.
-->
<parameter>
<name>url</name>
<value>jdbc:mysql://localhost:3306/prototypedb?autoReconnect=true</value
</parameter>
</ResourceParams>
</Context>
========================================================================
=========
-----Original Message-----
From: Ruth, Brice [mailto:[EMAIL PROTECTED]
Sent: Tuesday, July 27, 2004 10:04 AM
To: Tomcat Users List
Subject: Re: Tomcat Datasource
In addition to defining the DataSource in Tomcat's admin tool, you'll
need to define the Resource in you web.xml - something like this:
<resource-ref>
<!-- optional -->
<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>
<!-- local JNDI name to use in JSPs, servlets, etc. -->
<res-ref-name>
jdbc/phone
</res-ref-name>
<res-type>
javax.sql.DataSource
</res-type>
<res-auth>
Container
</res-auth>
</resource-ref>
You'll also need to define a ResourceLink in your Context, that links
what you want to call your DataSource locally (used in web.xml, see
above) to what you called your DataSource in the admin tool (globally
... these can be the same, but don't have to be). Something like this:
<ResourceLink global="jdbc/phone" name="jdbc/phone"
type="javax.sql.DataSource"/>
The 'global' attribute provides the name of the global JNDI resource
(what was defined in the admin tool); 'name' provides the name of the
local JNDI resource (what will be referenced in web.xml).
That's it! You shouldn't have any problems once you've done this.
Respectfully,
Brice Ruth
Bussie, Andre D wrote:
I'm using Tomcat 5.0.19. I configured a datasource via the Tomcat Admin
tool to configure a datatsource listed below is the server.xml file
settings for the datasource
<GlobalNamingResources>
<Resource name="jdbc/phone" auth="Container"
type="javax.sql.DataSource" description="Database for the phone
application" />
<ResourceParams name="jdbc/phone">
<parameter>
<name>maxWait</name>
<value>5000</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>4</value>
</parameter>
<parameter>
<name>password</name>
<value></value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:hsqldb.hsql://localhost</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>org.hsqldb.jdbcDriver</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>2</value>
</parameter>
<parameter>
<name>username</name>
<value>sa</value>
</parameter>
</ResourceParams>
</GlobalNamingResources>
However when I try to access the datasource from a jsp file I get the
following error
2004-07-26 10:42:19 StandardWrapperValve[jsp]: Servlet.service() for
servlet jsp threw exception
javax.naming.NameNotFoundException: Name jdbc/phone is not bound in
this
Context
Code snippet listed below
<% InitialContext ctx = new InitialContext();
DataSource ds =
(DataSource)ctx.lookup("java:comp/env/jdbc/phone");
Connection conn = ds.getConnection();
try{
Any suggestions on what can be causing this error. Why isn't in the
context and how do I bind it to the context?