tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Hernani Mourao <>
Subject RE: JNDI datasource lost on redeploy
Date Fri, 06 Feb 2004 00:41:07 GMT
Hi there,

I have the same problem . . . .
But by no means I manage to get the context.xml file processed: some
parameters donnot make any change when I check in Admin.

I am using W2K and Ant makes meta-inf in lower case. Would that be the
problem? I already did every test and nothing seems to work. I have already
set "unpackWARs" to "false" which improved the way the app is loaded.

Any help will be very much appreciated.

-----Original Message-----
From: Burgess, Jay S []
Sent: quinta-feira, 5 de Fevereiro de 2004 23:48
To: Tomcat Users List
Subject: RE: JNDI datasource lost on redeploy

Having just gone through this headache last week, I can provide a
solution that works for me (for TC5 only!).

First, create a file called context.xml and put it in a directory called
"META-INF" at the same level in your source hierarchy as WEB-INF.
context.xml should contain your <Context> and <Resource> definitions,
something like:

<Context path="/proto" docBase="proto.war" override="true"
cachingAllowed="true" useNaming="true" reloadable="false" debug="0">

<Resource name="jdbc/protodb" auth="Container"
type="javax.sql.DataSource" />
<ResourceParams name="jdbc/protodb">


Second, make sure your web.xml file contains the necessary
<resource-ref> details:


Third, use the Tomcat Ant tasks to undeploy/deploy your WAR to the
appbase directory:

<undeploy path="/${}" url="${manager.url}"
 username="${manager.username}" password="${manager.password}" />

<deploy url="${manager.url}" username="${manager.username}"
 password="${manager.password}" path="/${}"
 war="file:///${dist.home}/${}.war" />

Note that I also have "unpackWARs" set to "false" in server.xml, so that
the WAR is left intact.

I noticed that when using this setup, Tomcat pulls context.xml out of
the WAR, renames it <app name>.war, and puts it into the
"%CATALINA_HOME%/conf/Catalina/localhost" directory.  I just it alone,
as it goes away on undeploy.

Let me know if this doesn't work for you.


-----Original Message-----
From: todd runstein []
Sent: Thursday, February 05, 2004 4:51 PM
Subject: JNDI datasource lost on redeploy

I've set up a JNDI datasource on my test server that
works just fine (Tomcat=5.0.18, JDK=1.4.1, RedHat=8,
M$_SQL=2000).  However, each time I recompile and
redeploy the application, I lose my connection pool,
recieving the "Cannot create JDBC driver of class ''
for connect URL 'null'" error.  I have to restart
Tomcat to get it working again.

This sort of makes sense, since I'm defining the
Resource within a Context in server.xml.  It seems
that I either need to make the resource globally
available to every web app, or move the resource
definition to within my web app.  Unfortunately, I
don't know what to move or where to move it or what
options might work.  Any advice or suggestions?

I'm including all the code used to get the connection
as it stands now.  Again, this currently works up
until I try to redeploy the web app.

My driver jars (there are 3 for MS SQL) are in

          <Context path="/mfgreports"
docBase="mfgreports" debug="5">
                type="javax.sql.DataSource" />







Code used to get connection:
public class JNDIConnection {

	public static Connection getConnection(String
		throws NamingException, SQLException{
			Context ctx = new InitialContext();
//This syntax is a bit different than the docs show,
but it appears to be working
			DataSource ds =
			return ds.getConnection();

Thanks again!

The only "dumb question" is the one you were too afraid to ask.

Check out RouteRuler - Free software for runners, cyclists, walkers,

Do you Yahoo!?
Yahoo! Finance: Get your refund fast by filing online.

To unsubscribe, e-mail:
For additional commands, e-mail:

To unsubscribe, e-mail:
For additional commands, e-mail:

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message