Do you have anything in your Tomcat log files that might help? If not, you can bump up the debug levels in server.xml and you might get some more info.
I also found that adding one of the two following listeners in my server.xml helped me debug my DBCP problems (I don't remember which one I added, but it should be obvious): <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" debug="9"/> <Listener className="org.apache.catalina.core.NamingContextListener" debug="9"/> Jay Vertical Technology Group http://www.vtgroup.com/ -----Original Message----- From: Scott Purcell [mailto:[EMAIL PROTECTED] Sent: Friday, April 08, 2005 3:08 PM To: Tomcat Users List Subject: DBCP Please Help Get Working Properly Hello, I am trying to use the DBCP features of Tomcat 5.5.7. I created a webapp named "testDB" and put it under $CATALINA_HOME/webapps/testDB. Then I created a testDB.xml file under $CATALINA_HOME/conf/Catalina/localhost/testDB.xml. // here it is <Context path="/testDB" docBase="testDB" debug="5" reloadable="true" crossContext="true"> <Resource name="jdbc/testDB" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username="javauser" password="javadude" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/fritest?autoReconnect=true"/> </Context> I have been following the notes from: http://localhost/tomcat-docs/jndi-datasource-examples-howto.html I made sure I completed the rest of the tasks. WEB-INF has the two tag locations, and the resource ref. eg: <taglib> <taglib-uri>/WEB-INF/sql.tld</taglib-uri> <taglib-location>/WEB-INF/sql.tld</taglib-location> </taglib> <taglib> <taglib-uri>/WEB-INF/c.tld</taglib-uri> <taglib-location>/WEB-INF/c.tld</taglib-location> </taglib> <resource-ref> <description>DB Connection</description> <res-ref-name>jdbc/testDB</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref> I finally hit my jsp page which is this: <%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <sql:query var="rs" dataSource="jdbc/testDB"> select id, foo, bar from testdata </sql:query> <html> <head> <title>DB Test</title> </head> <body> <h2>Results</h2> <c:forEach var="row" items="${rs.rows}"> Foo ${row.foo}<br/> Bar ${row.bar}<br/> </c:forEach> </body> </html> And I get no results: Now I am pretty sure I have all configured. Because if I use a fallback (Tomcat 4.1) code piece I had, I get results using the same settings: package foo; import javax.naming.*; import javax.sql.*; import java.sql.*; public class DBTest { String foo = "Not Connected"; int bar = -1; public void init() { try{ Context ctx = new InitialContext(); if(ctx == null ) throw new Exception("Boom - No Context"); DataSource ds = (DataSource)ctx.lookup( "java:comp/env/jdbc/testDB"); if (ds != null) { Connection conn = ds.getConnection(); if(conn != null) { foo = "Got Connection "+conn.toString(); Statement stmt = conn.createStatement(); ResultSet rst = stmt.executeQuery( "select id, foo, bar from testdata"); while(rst.next()) { System.out.println("next ...."); foo=rst.getString(2); bar=rst.getInt(3); } conn.close(); } } }catch(Exception e) { e.printStackTrace(); } } public String getFoo() { return foo; } public int getBar() { return bar;} } And using the above class works all day. The only difference I see is that the class using a "naming" import and the jsp does not. Can anyone help. Thanks, Scott -----Original Message----- From: David Smith [mailto:[EMAIL PROTECTED] Sent: Friday, April 08, 2005 1:14 PM To: Tomcat Users List Subject: Re: Add Context Path, Tomcat 5.5.7 Hi. Take a look at this for where to put <Context> elements: http://jakarta.apache.org/tomcat/tomcat-5.5-doc/config/context.html This is new with Tomcat 5.0 and is continued in Tomcat 5.5 --David Scott Purcell wrote: >Hello, > >I am following the information here to add DBCP to my application. >http://jakarta.apache.org/tomcat/tomcat-5.5-doc/jndi-datasource-examples-howto.html > >I am reading to add the <Context path="/DBTest ... from the above docs." The instructions say to ". > >Configure the JNDI DataSource in Tomcat by adding a declaration for your resource to $CATALINA_HOME/conf/server.xml. > >Add this in between the </Context> tag of the examples context and the </Host> tag closing the localhost definition. > > > >So cool, I opened up the server.xml, but do not see any existing context or host tags in it. Here is my server.xml file. Does anyone know where I put the Context for the DBCP stuff? Thanks, > >'<!-- Example Server Configuration File --> ><!-- Note that component elements are nested corresponding to their > parent-child relationships with each other --> > ><!-- A "Server" is a singleton element that represents the entire JVM, > which may contain one or more "Service" instances. The Server > listens for a shutdown command on the indicated port. > > Note: A "Server" is not itself a "Container", so you may not > define subcomponents such as "Valves" or "Loggers" at this level. > --> > ><Server port="8005" shutdown="SHUTDOWN"> > > <!-- Comment these entries out to disable JMX MBeans support used for the > administration web application --> > <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" /> > <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /> > <Listener className="org.apache.catalina.storeconfig.StoreConfigLifecycleListener"/> > > <!-- Global JNDI resources --> > <GlobalNamingResources> > > <!-- Test entry for demonstration purposes --> > <Environment name="simpleValue" type="java.lang.Integer" value="30"/> > > <!-- Editable user database that can also be used by > UserDatabaseRealm to authenticate users --> > <Resource name="UserDatabase" auth="Container" > type="org.apache.catalina.UserDatabase" > description="User database that can be updated and saved" > factory="org.apache.catalina.users.MemoryUserDatabaseFactory" > pathname="conf/tomcat-users.xml" /> > > </GlobalNamingResources> > > <!-- A "Service" is a collection of one or more "Connectors" that share > a single "Container" (and therefore the web applications visible > within that Container). Normally, that Container is an "Engine", > but this is not required. > > Note: A "Service" is not itself a "Container", so you may not > define subcomponents such as "Valves" or "Loggers" at this level. > --> > > <!-- Define the Tomcat Stand-Alone Service --> > <Service name="Catalina"> > > <!-- A "Connector" represents an endpoint by which requests are received > and responses are returned. Each Connector passes requests on to the > associated "Container" (normally an Engine) for processing. > > By default, a non-SSL HTTP/1.1 Connector is established on port 8080. > You can also enable an SSL HTTP/1.1 Connector on port 8443 by > following the instructions below and uncommenting the second Connector > entry. SSL support requires the following steps (see the SSL Config > HOWTO in the Tomcat 5 documentation bundle for more detailed > instructions): > * If your JDK version 1.3 or prior, download and install JSSE 1.0.2 or > later, and put the JAR files into "$JAVA_HOME/jre/lib/ext". > * Execute: > %JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA > (Windows) > $JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA (Unix) > with a password value of "changeit" for both the certificate and > the keystore itself. > > By default, DNS lookups are enabled when a web application calls > request.getRemoteHost(). This can have an adverse impact on > performance, so you can disable it by setting the > "enableLookups" attribute to "false". When DNS lookups are disabled, > request.getRemoteHost() will return the String version of the > IP address of the remote client. > --> > > <!-- Define a non-SSL HTTP/1.1 Connector on port 8080 --> > <Connector >port="80" maxThreads="150" minSpareThreads="25" >maxSpareThreads="75" > enableLookups="false" redirectPort="8443" acceptCount="100" > connectionTimeout="20000" disableUploadTimeout="true" /> > <!-- Note : To disable connection timeouts, set connectionTimeout value > to 0 --> > > <!-- Note : To use gzip compression you could set the following properties : > > compression="on" > compressionMinSize="2048" > noCompressionUserAgents="gozilla, traviata" > compressableMimeType="text/html,text/xml" > --> > > <!-- Define a SSL HTTP/1.1 Connector on port 8443 --> > <!-- > <Connector port="8443" > maxThreads="150" minSpareThreads="25" maxSpareThreads="75" > enableLookups="false" disableUploadTimeout="true" > acceptCount="100" scheme="https" secure="true" > clientAuth="false" sslProtocol="TLS" /> > --> > > <!-- Define an AJP 1.3 Connector on port 8009 --> > <Connector port="8009" > enableLookups="false" redirectPort="8443" protocol="AJP/1.3" /> > > <!-- Define a Proxied HTTP/1.1 Connector on port 8082 --> > <!-- See proxy documentation for more information about using this. --> > <!-- > <Connector port="8082" > maxThreads="150" minSpareThreads="25" maxSpareThreads="75" > enableLookups="false" acceptCount="100" > connectionTimeout="20000" > proxyPort="80" disableUploadTimeout="true" /> > --> > > <!-- An Engine represents the entry point (within Catalina) that processes > every request. The Engine implementation for Tomcat stand alone > analyzes the HTTP headers included with the request, and passes them > on to the appropriate Host (virtual host). --> > > <!-- You should set jvmRoute to support load-balancing via AJP ie : > <Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm1"> > --> > > <!-- Define the top level container in our container hierarchy --> > <Engine name="Catalina" defaultHost="localhost"> > > <!-- The request dumper valve dumps useful debugging information about > the request headers and cookies that were received, and the response > headers and cookies that were sent, for all requests received by > this instance of Tomcat. If you care only about requests to a > particular virtual host, or a particular application, nest this > element inside the corresponding <Host> or <Context> entry instead. > > For a similar mechanism that is portable to all Servlet 2.4 > containers, check out the "RequestDumperFilter" Filter in the > example application (the source for this filter may be found in > "$CATALINA_HOME/webapps/examples/WEB-INF/classes/filters"). > > Request dumping is disabled by default. Uncomment the following > element to enable it. --> > <!-- > <Valve className="org.apache.catalina.valves.RequestDumperValve"/> > --> > > <!-- Because this Realm is here, an instance will be shared globally --> > > <!-- This Realm uses the UserDatabase configured in the global JNDI > resources under the key "UserDatabase". Any edits > that are performed against this UserDatabase are immediately > available for use by the Realm. --> > <Realm className="org.apache.catalina.realm.UserDatabaseRealm" > resourceName="UserDatabase"/> > > <!-- Comment out the old realm but leave here for now in case we > need to go back quickly --> > <!-- > <Realm className="org.apache.catalina.realm.MemoryRealm" /> > --> > > <!-- Replace the above Realm with one of the following to get a Realm > stored in a database and accessed via JDBC --> > > <!-- > <Realm className="org.apache.catalina.realm.JDBCRealm" > driverName="org.gjt.mm.mysql.Driver" > connectionURL="jdbc:mysql://localhost/authority" > connectionName="test" connectionPassword="test" > userTable="users" userNameCol="user_name" userCredCol="user_pass" > userRoleTable="user_roles" roleNameCol="role_name" /> > --> > > <!-- > <Realm className="org.apache.catalina.realm.JDBCRealm" > driverName="oracle.jdbc.driver.OracleDriver" > connectionURL="jdbc:oracle:thin:@ntserver:1521:ORCL" > connectionName="scott" connectionPassword="tiger" > userTable="users" userNameCol="user_name" userCredCol="user_pass" > userRoleTable="user_roles" roleNameCol="role_name" /> > --> > > <!-- > <Realm className="org.apache.catalina.realm.JDBCRealm" > driverName="sun.jdbc.odbc.JdbcOdbcDriver" > connectionURL="jdbc:odbc:CATALINA" > userTable="users" userNameCol="user_name" userCredCol="user_pass" > userRoleTable="user_roles" roleNameCol="role_name" /> > --> > > <!-- Define the default virtual host > Note: XML Schema validation will not work with Xerces 2.2. > --> > <Host name="localhost" appBase="webapps" > unpackWARs="true" autoDeploy="true" > xmlValidation="false" xmlNamespaceAware="false"> > > <!-- Defines a cluster for this node, > By defining this element, means that every manager will be > changed. > So when running a cluster, only make sure that you have webapps in there > that need to be clustered and remove the other ones. > A cluster has the following parameters: > > className = the fully qualified name of the cluster class > > name = a descriptive name for your cluster, can be anything > > mcastAddr = the multicast address, has to be the same for all the nodes > > mcastPort = the multicast port, has to be the same for all the > nodes > > mcastBindAddr = bind the multicast socket to a specific address > > mcastTTL = the multicast TTL if you want to limit your broadcast > > mcastSoTimeout = the multicast readtimeout > > mcastFrequency = the number of milliseconds in between sending a "I'm alive" heartbeat > > mcastDropTime = the number a milliseconds before a node is considered "dead" if no heartbeat is received > > tcpThreadCount = the number of threads to handle incoming replication requests, optimal would be the same amount of threads as nodes > > tcpListenAddress = the listen address (bind address) for TCP cluster request on this host, > in case of multiple ethernet cards. > auto means that address becomes > InetAddress.getLocalHost().getHostAddress() > > tcpListenPort = the tcp listen port > > tcpSelectorTimeout = the timeout (ms) for the Selector.select() method in case the OS > has a wakup bug in java.nio. Set to 0 for no timeout > > printToScreen = true means that managers will also print to > std.out > > expireSessionsOnShutdown = true means that > > useDirtyFlag = true means that we only replicate a session after setAttribute,removeAttribute has been called. > false means to replicate the session after each request. > false means that replication would work for the following piece of code: (only for SimpleTcpReplicationManager) > <% > HashMap map = (HashMap)session.getAttribute("map"); > map.put("key","value"); > %> > replicationMode = can be either 'pooled', 'synchronous' or 'asynchronous'. > * Pooled means that the replication happens using several sockets in a synchronous way. Ie, the data gets replicated, then the request return. This is the same as the 'synchronous' setting except it uses a pool of sockets, hence it is multithreaded. This is the fastest and safest configuration. To use this, also increase the nr of tcp threads that you have dealing with replication. > * Synchronous means that the thread that executes the request, is also the > thread the replicates the data to the other nodes, and will not return until all > nodes have received the information. > * Asynchronous means that there is a specific 'sender' thread for each cluster node, > so the request thread will queue the replication request into a "smart" queue, > and then return to the client. > The "smart" queue is a queue where when a session is added to the queue, and the same session > already exists in the queue from a previous request, that session will be replaced > in the queue instead of replicating two requests. This almost never happens, unless there is a > large network delay. > --> > <!-- > When configuring for clustering, you also add in a valve to catch all the requests > coming in, at the end of the request, the session may or may not be replicated. > A session is replicated if and only if all the conditions are met: > 1. useDirtyFlag is true or setAttribute or removeAttribute has been called AND > 2. a session exists (has been created) > 3. the request is not trapped by the "filter" attribute > > The filter attribute is to filter out requests that could not modify the session, > hence we don't replicate the session after the end of this request. > The filter is negative, ie, anything you put in the filter, you mean to filter out, > ie, no replication will be done on requests that match one of the filters. > The filter attribute is delimited by ;, so you can't escape out ; even if you wanted to. > > filter=".*\.gif;.*\.js;" means that we will not replicate the session after requests with the URI > ending with .gif and .js are intercepted. > > The deployer element can be used to deploy apps cluster wide. > Currently the deployment only deploys/undeploys to working members in the cluster > so no WARs are copied upons startup of a broken node. > The deployer watches a directory (watchDir) for WAR files when watchEnabled="true" > When a new war file is added the war gets deployed to the local instance, > and then deployed to the other instances in the cluster. > When a war file is deleted from the watchDir the war is undeployed locally > and cluster wide > --> > > <!-- > <Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster" > managerClassName="org.apache.catalina.cluster.session.DeltaManager" > expireSessionsOnShutdown="false" > useDirtyFlag="true" > notifyListenersOnReplication="true"> > > <Membership > className="org.apache.catalina.cluster.mcast.McastService" > mcastAddr="228.0.0.4" > mcastPort="45564" > mcastFrequency="500" > mcastDropTime="3000"/> > > <Receiver > className="org.apache.catalina.cluster.tcp.ReplicationListener" > tcpListenAddress="auto" > tcpListenPort="4001" > tcpSelectorTimeout="100" > tcpThreadCount="6"/> > > <Sender > > className="org.apache.catalina.cluster.tcp.ReplicationTransmitter" > replicationMode="pooled" > ackTimeout="15000"/> > > <Valve className="org.apache.catalina.cluster.tcp.ReplicationValve" > filter=".*\.gif;.*\.js;.*\.jpg;.*\.htm;.*\.html;.*\.txt;"/> > > <Deployer className="org.apache.catalina.cluster.deploy.FarmWarDeployer" > tempDir="/tmp/war-temp/" > deployDir="/tmp/war-deploy/" > watchDir="/tmp/war-listen/" > watchEnabled="false"/> > </Cluster> > --> > > > > <!-- Normally, users must authenticate themselves to each web app > individually. Uncomment the following entry if you would like > a user to be authenticated the first time they encounter a > resource protected by a security constraint, and then have that > user identity maintained across *all* web applications contained > in this virtual host. --> > <!-- > <Valve className="org.apache.catalina.authenticator.SingleSignOn" /> > --> > > <!-- Access log processes all requests for this virtual host. By > default, log files are created in the "logs" directory relative to > $CATALINA_HOME. If you wish, you can specify a different > directory with the "directory" attribute. Specify either a > relative > (to $CATALINA_HOME) or absolute path to the desired directory. > --> > <!-- > <Valve className="org.apache.catalina.valves.AccessLogValve" > directory="logs" prefix="localhost_access_log." suffix=".txt" > pattern="common" resolveHosts="false"/> > --> > > <!-- Access log processes all requests for this virtual host. By > default, log files are created in the "logs" directory relative to > $CATALINA_HOME. If you wish, you can specify a different > directory with the "directory" attribute. Specify either a > relative > (to $CATALINA_HOME) or absolute path to the desired directory. > This access log implementation is optimized for maximum > performance, > but is hardcoded to support only the "common" and "combined" > patterns. > --> > <!-- > <Valve className="org.apache.catalina.valves.FastCommonAccessLogValve" > directory="logs" prefix="localhost_access_log." suffix=".txt" > pattern="common" resolveHosts="false"/> > --> > > </Host> > > </Engine> > > </Service> > ></Server> > > > > > > >Scott K Purcell | Developer | VERTIS | >555 Washington Ave. 4th Floor | St. Louis, MO 63101 | >314.588.0720 Ext:1320 | [EMAIL PROTECTED] | http://www.vertisinc.com <http://www.vertisinc.com/> > >Vertis is the premier provider of targeted advertising, media, and >marketing services that drive consumers to marketers more effectively. > > > > > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]