My apologies, we're using 5.0.x and I hadn't realized they went away. But maybe the logs still will provide some useful info?
Jay Vertical Technology Group http://www.vtgroup.com/ -----Original Message----- From: Robert Harrison [mailto:[EMAIL PROTECTED] Sent: Friday, April 08, 2005 4:20 PM To: Tomcat Users List Subject: Re: DBCP Please Help Get Working Properly Aren't debug levels in TC 5.5 inactive? Will need to set up log4j. Bob On Apr 8, 2005 5:15 PM, Jay Burgess <[EMAIL PROTECTED]> wrote: > 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%binkeytool -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] > > -- "Religion is what keeps the poor from murdering the rich" Napoleon Bonaparte "Everybody knows something: Nobody knows everything" Dusty Baker "No matter how cynical you become, its never enough to keep up"-Lily Tomlin "It's useless to attempt to reason a man out of a thing he was never reasoned into."-- Jonathan Swift Robert W. Harrison, III, MD 91 Berkeley st. Rochester, NY 14607 585/271-6878 (O) 585/752-1365 (Cell) 585/473-5643 (F) http://www.beeslender.com --------------------------------------------------------------------- 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]