No, it shouldn't be entirely in the web.xml. Consider the stuff in web.xml to be the interface, not the implementation (speaking in Java terms). The implementation, DBCP, is provided in the server's proprietary configuration. Apps are portable because the standard configuration such as web.xml only specifies some general interfaces and then the containers are free to provide their own implementation. As such, you need to provide the DBCP implementation in Tomcat's server.xml.


Like I said, the configuration all looks correct to me. The problem is *not* the configuration as far as I can tell.

Jake

At 10:02 AM 3/31/2003 -0700, you wrote:
Not that I really have a clue what I am talking about, but I receive the
same error if I remove/reload the webapp with ant without restarting the
tomcat application.  From reading below it sounds like the entire
declaration should be in the web.xml instead of the server.xml  That being
said, try restarting tomcat and see if the problem resolves...
If it does you might want to try to move the declaration to the web.xml.


-----Original Message----- From: Jacob Kjome [mailto:[EMAIL PROTECTED] Sent: Monday, March 31, 2003 9:54 AM To: Tomcat Users List Subject: RE: JNDI resources



No, that is absolutely not true and very misleading.  The spec actually
declares that it should definitely be specified in web.xml no matter
what.  Tomcat doesn't enforce this, but if you want your webapp to be
portable, then you should include it in web.xml.  Remember, server.xml is
Tomcat's proprietary configuration.  J2EE is all about providing a
specification for configuration and then allowing proprietary servers to
have their own configuration that maps to this and allows it to override it.

The configuration is correct from what I can tell.  You might try the
following code, though...

Context ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/Pool");


Not sure if this will fix the problem, but the problem most assuredly is not the issue of having the web.xml config stuff.

Jake


At 10:47 AM 3/31/2003 +0200, you wrote: >Hi, > >What is in your web.xml relating to the datasource? > >If the datasource is correctly defined in server.xml, there is no need to >define it in web.xml, but if you do, web.xml will supersede server.xml, >and if web.xml does not have all the correct parameters, you will get this >problem. > >HTH > >-----Original Message----- >From: Greg Speechley [mailto:[EMAIL PROTECTED] >Sent: 31 March 2003 10:40 >To: Tomcat User >Subject: Re: JNDI resources > > >I am trying to use tomcat's DBCP and access it by setting variables in >server.xml and web.xml as outlined in the documentation. However it is not >getting any of the values that are set in server.xml. > >Here is my java code: >Context initCtx = new InitialContext(); >Context envCtx = (Context) initCtx.lookup("java:comp/env"); >// Look up our data source >DataSource ds = (DataSource) envCtx.lookup("jdbc/Pool"); >if (ds != null) >{ >Connection conn = ds.getConnection(); >....... >} > >However I get the following error: java.sql.SQLException: Cannot load JDBC >driver class 'null'. ds is not null but all its variables are (I checked by >casting it to BasicDataSource and using the getter methods). > >I have the mysql driver in a jar in common/lib and I think I have followed >all the steps correctly. > >Thanks for your help >Greg > >PS I am having the same sort of problems with getting the mail variables as >well > >server.xml >--------------------------------------------------------------------------- - >----------- ><Server port="8005" shutdown="SHUTDOWN" debug="0"> > <!-- Uncomment these entries to enable JMX MBeans support --> > <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" > debug="0"/> > <Listener >className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" > debug="0"/> > > <!-- Global JNDI resources --> > <GlobalNamingResources> > > <!-- 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"> > </Resource> > <ResourceParams name="UserDatabase"> > <parameter> > <name>factory</name> > <value>org.apache.catalina.users.MemoryUserDatabaseFactory</value> > </parameter> > <parameter> > <name>pathname</name> > <value>conf/tomcat-users.xml</value> > </parameter> > </ResourceParams> > > </GlobalNamingResources> > <!-- Define the Tomcat Stand-Alone Service --> > <Service name="Tomcat-Standalone"> > > <!-- Define a non-SSL Coyote HTTP/1.1 Connector on port 8081 --> > <Connector className="org.apache.coyote.tomcat4.CoyoteConnector" >port="80" minProcessors="5" maxProcessors="75" > enableLookups="true" redirectPort="8443" > acceptCount="100" debug="0" connectionTimeout="20000" > useURIValidationHack="false" disableUploadTimeout="true" /> > <!-- Note : To disable connection timeouts, set connectionTimeout value > to -1 --> > > > <!-- Define a Coyote/JK2 AJP 1.3 Connector on port 8009 --> > <Connector className="org.apache.coyote.tomcat4.CoyoteConnector" > port="8009" minProcessors="5" maxProcessors="75" > enableLookups="true" redirectPort="8443" > acceptCount="10" debug="0" connectionTimeout="20000" > useURIValidationHack="false" > >protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"/> > > > <!-- Define the top level container in our container hierarchy --> > <Engine name="Standalone" defaultHost="localhost" debug="0"> > > <!-- Global logger unless overridden at lower levels --> > <Logger className="org.apache.catalina.logger.FileLogger" > prefix="catalina_log." suffix=".txt" > timestamp="true"/> > > <Realm className="org.apache.catalina.realm.UserDatabaseRealm" > debug="0" resourceName="UserDatabase"/> > > <!-- Define the default virtual host --> > <Host name="localhost" debug="0" appBase="webapps" > unpackWARs="true" autoDeploy="true"> > > <!-- Logger shared by all Contexts related to this virtual host. By > default (when using FileLogger), 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.--> > <Logger className="org.apache.catalina.logger.FileLogger" > directory="logs" prefix="localhost_log." suffix=".txt" > timestamp="true"/> > > <!-- Define properties for each web application. This is only >needed > if you want to set non-default properties, or have web >application > document roots in places other than the virtual host's appBase > directory. --> > > <!-- Tomcat Root Context --> > <!-- > <Context path="" docBase="ROOT" debug="0"/> > --> > > <Context path="/myapp" docBase="myapp" debug="0" reloadable="true" >crossContext="true"> > <Resource name="mail/Session" auth="Container" >type="javax.mail.Session"/> > <ResourceParams name="mail/Session"> > <parameter> > <name>mail.smtp.host</name> > <value>mail.learnedsolutions.com</value> > </parameter> > </ResourceParams> > > <Resource name="jdbc/Pool" auth="Container" type="javax.sql.DataSource"/> > <ResourceParams name="jdbc/Pool"> > <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>root</value> > </parameter> > <parameter> > <name>password</name> > <value>password</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/test?autoReconnect=true</value> > </parameter> > </ResourceParams> ></Context> > </Host> > </Engine> > </Service> ></Server> >--------------------------------------------------------------------------- - >-------------------------------- >web.xml >--------------------------------------------------------------------------- - >-------------------------------- ><web-app> > <servlet> > <servlet-name>Hello</servlet-name> > <servlet-class>mypackage.Hello</servlet-class> > </servlet> > > <servlet-mapping> > <servlet-name>Hello</servlet-name> > <url-pattern>/Hello</url-pattern> > </servlet-mapping> > > <session-config> > <session-timeout>30</session-timeout> <!-- 30 minutes --> > </session-config> > <resource-ref> > <description> > Resource reference to a factory for javax.mail.Session instances that >may be used for sending electronic mail messages, preconfigured to connect >to the appropriate SMTP server. > </description> > <res-ref-name> > mail/Session > </res-ref-name> > <res-type> > javax.mail.Session > </res-type> > <res-auth> > Container > </res-auth> > </resource-ref> > <resource-ref> > <description>DB Connection</description> > <res-ref-name>jdbc/Pool</res-ref-name> > <res-type>javax.sql.DataSource</res-type> > <res-auth>Container</res-auth> > </resource-ref> ></web-app> >--------------------------------------------------------------------------- - >----------------------------- > > >--------------------------------------------------------------------- >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]

Reply via email to