tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mark Whitby" <ug82...@cs.bham.ac.uk>
Subject JNDI Datasource Problem - SOLVED
Date Mon, 20 Feb 2006 21:47:46 GMT
Marc,

It works like a charm now thanks very much!  (I had verified it before hand 
yes using code set up to access the database from within a jsp file but I'm 
much happier now I can do it this way!)

Think we may need to recommend a change in the set up help files Tomcat have

Mark

----- Original Message ----- 
From: "Marc Richards" <mjrx20@yahoo.com>
To: "Tomcat Users List" <users@tomcat.apache.org>
Sent: Monday, February 20, 2006 9:38 PM
Subject: Re: JNDI Datasource Problem


>I see that you have your resource defined under the
> context for your jsp.  I know you're suppose to be
> able to do this, but I haven't had much luck with it
> personally.
>
> Try this just for kicks:
>
> 1.  Move the TestDB resource to the
> <GlobalNamingResources> section of server.xml
> 2.  If there is a "context".xml file under
> conf\Catalina\localhost, then modify it to include a
> pointer to your resource like so:
>
> <ResourceLink name="jdbc/TestDB"
> type="javax.sql.DataSource"
>   global="jdbc/TestDB"/>
>
> if no context file exists, create one (if you're in
> root, there should be a root.xml file there already).
>
> 3.  Leave the web.xml file as you have it already.
>
> As I said, you're not suppose to have to do this, but
> I had the same problem that you're having now before I
> made this change.
>
> Have you verified that the db connection works at all
> with the url that you're using?
>
> -marc
>
>
>
> --- Mark Whitby <ug82msw@cs.bham.ac.uk> wrote:
>
>> Yeah I know, I was using the wrong guide.  I'm using
>> Tomcat 5.5.15.  However I'm now using the right
>> guide and still have the same problem.  I'm getting
>> the following error:
>>
>> javax.servlet.ServletException: Unable to get
>> connection, DataSource invalid:
>> "org.apache.tomcat.dbcp.dbcp.SQLNestedException:
>> Cannot create JDBC driver of class '' for connect
>> URL 'null'"
>>
>>
>> org.apache.jasper.JasperException: Exception in JSP:
>> /dbtest.jsp:4
>>
>> 1: <%@ taglib uri="http://java.sun.com/jsp/jstl/sql"
>> prefix="sql" %>
>> 2: <%@ taglib
>> uri="http://java.sun.com/jsp/jstl/core" prefix="c"
>> %>
>> 3:
>> 4: <sql:query var="rs" dataSource="jdbc/TestDB">
>> 5: select id, foo, bar from testdata
>> 6: </sql:query>
>> 7:
>>
>>
> http://tomcat.apache.org/tomcat-5.5-doc/jndi-datasource-examples-howto.html
>>
>> The only thing I haven't done is the .war file thing
>> at the end, just created the .jsp file straight in
>> the ROOT directory to test it.
>>
>> Any thoughts why I get this error?
>>
>> Mark
>>
>> Attached below are my server.xml file and web.xml
>> file
>>
>> Web.xml
>>
>> <?xml version="1.0" encoding="ISO-8859-1"?>
>>
>> <!DOCTYPE web-app PUBLIC
>> "-//Sun Microsystems, Inc.//DTD Web Application
>> 2.2//EN"
>> "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
>>
>> <web-app xmlns="http://java.sun.com/xml/ns/j2ee"
>>
>>
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>
>> xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
>> http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
>>     version="2.4">
>>
>>
>>
>> <!--
>> Specifies the first page that users will come to in
>> the system
>> -->
>>   <welcome-file-list>
>>     <welcome-file>/index.jsp</welcome-file>
>>   </welcome-file-list>
>>
>> <!--
>> Specifies the error page that will occur for 404
>> errors
>> -->
>>
>>   <error-page>
>>     <error-code>404</error-code>
>>     <location>/error.jsp</location>
>>   </error-page>
>>
>> <!--
>> Database connection test
>> -->
>>
>>   <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>
>>
>>
>>
>>
>> <!--
>> Specifies the security area within the system
>> -->
>>
>>     <security-constraint>
>>         <web-resource-collection>
>>             <web-resource-name>Secure
>> Area</web-resource-name>
>>             <url-pattern>/secure/*</url-pattern>
>>             <http-method>GET</http-method>
>>             <http-method>POST</http-method>
>>         </web-resource-collection>
>>         <user-data-constraint>
>>
>>
> <transport-guarantee>CONFIDENTIAL</transport-guarantee>
>>         </user-data-constraint>
>>     </security-constraint>
>>
>>
>> </web-app>
>>
>> Server.xml
>>
>> <!-- 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.core.AprLifecycleListener"
>> />
>>   <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="8080"               maxHttpHeaderSize="8192"
>>                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" scheme="https"
>> secure="true" minSpareThreads="25"
>> connectionTimeout="60000"   clientAuth="false"
>> keystorePass="?MtHw7!" connectionLinger="-1"
>> serverSoTimeout="0"
>> keystoreFile="D:\FYPCode\keystore"
>> maxSpareThreads="75" maxThreads="150"
>> tcpNoDelay="true"   maxHttpHeaderSize="8192"
>> 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"/>
>>         -->
>>
>> <Context path="/DBTest" docBase="DBTest"
>>         debug="5" reloadable="true"
>> crossContext="true">
>>
>>     <!-- maxActive: 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.
>>          -->
>>
>>     <!-- maxIdle: Maximum number of idle dB
>> connections to retain in pool.
>>          Set to -1 for no limit.  See also the DBCP
>> documentation on this
>>          and the minEvictableIdleTimeMillis
>> configuration parameter.
>>          -->
>>
>>     <!-- maxWait: 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.
>>          -->
>>
>>     <!-- username and password: MySQL dB username
>> and password for dB connections  -->
>>
>>     <!-- driverClassName: Class name for the old
>> mm.mysql JDBC driver is
>>          org.gjt.mm.mysql.Driver - we recommend
>> using Connector/J though.
>>          Class name for the official MySQL
>> Connector/J driver is com.mysql.jdbc.Driver.
>>          -->
>>
>>     <!-- url: 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.
>>          -->
>>
>>   <Resource name="jdbc/TestDB" auth="Container"
>> type="javax.sql.DataSource"
>>                maxActive="100" maxIdle="30"
>> maxWait="10000"
>>                username="javauser" password="pilks2"
>> driverClassName="com.mysql.jdbc.Driver"
>>
>>
> url="jdbc:mysql://localhost:3306/fyptest?autoReconnect=true"/>
>>
>> </Context>
>>
>>
>>
>>       </Host>
>>
>>     </Engine>
>>
>>   </Service>
>>
>> </Server>
>>
>> ----- Original Message ----- 
>> From: "Marc Richards" <mjrx20@yahoo.com>
>> To: "Tomcat Users List" <users@tomcat.apache.org>
>> Sent: Monday, February 20, 2006 8:55 PM
>> Subject: Re: JNDI Datasource Problem
>>
>>
>> >I didn't see any mention of the Tomcat version
>> here,
>> > but in 5.5 the <ResourceParams> part of the config
>> is
>> > no longer used.  All paramters go in the <Resource
>> > ...> tag with name="value" format just like name
>> and
>> > auth from your example below.  i.e. maxIdle="30".
>> >
>> > -marc
>> >
>> > --- Mark Whitby <ug82msw@cs.bham.ac.uk> wrote:
>> >
>> >> Hey guys,
>> >>
>> >> Thanks for the help with the previous problem I
>> had,
>> >> I've managed to solve them now thanks to your
>> help.
>> >> But now I'm having a problem with setting up a
>> >> DataSource connection.  I've followed the example
>> >> word for word and got the following error:
>> >>
>> >> javax.servlet.ServletException: Unable to get
>> >> connection, DataSource invalid:
>> >> "org.apache.tomcat.dbcp.dbcp.SQLNestedException:
>> >> Cannot create JDBC driver of class '' for connect
>> >> URL 'null'"
>> >>
>> >> I did a google search for this but only managed
>> to
>> >> find something on the NetBeans website which
>> wasn't
>> >> much help.  I've edited the server.xml file as
>> >> stated, placed the relevent jar file
>> >> (mysql-connector-java-3.1.12-bin.jar) in the lib
>> >> folder in my web application and in the
>> /common/lib
>> >> folder in the Tomcat home folder and I've reset
>> the
>> >> server and I'm still getting the same problem.
>> >>
>> >> I'm using MySQL, database is called 'fyptest' and
>> >> the table is called 'testdata'.  So where am I
>> going
>> >> wrong?
>> >>
>> >> Many thanks
>> >>
>> >> Mark Whitby
>> >>
>> >> Server.xml file:
>> >>
>> >> <Context path="/DBTest" docBase="DBTest"
>> >>         debug="5" reloadable="true"
>> >> crossContext="true">
>> >>
>> >>   <Logger
>> >> className="org.apache.catalina.logger.FileLogger"
>> >>              prefix="localhost_DBTest_log."
>> >> suffix=".txt"
>> >>              timestamp="true"/>
>> >>
>> >>   <Resource name="jdbc/TestDB"
>> >>                auth="Container"
>> >>                type="javax.sql.DataSource"/>
>> >>
>> >>   <ResourceParams name="jdbc/TestDB">
>> >>     <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 -1 for no limit.  See also the
>> DBCP
>> >> documentation on this
>> >>          and the minEvictableIdleTimeMillis
>> >> configuration parameter.
>> >>          -->
>> >>     <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>javauser</value>
>> >>     </parameter>
>> >>     <parameter>
>> >>      <name>password</name>
>> >>      <value>pilks2</value>
>> >>     </parameter>
>> >>
>> >>     <!-- Class name for the old mm.mysql JDBC
>> driver
>> >> - uncomment this entry and comment next
>> >>          if you want to use this driver - we
>> >> recommend using Connector/J though
>> >>     <parameter>
>> >>        <name>driverClassName</name>
>> >>        <value>org.gjt.mm.mysql.Driver</value>
>> >>     </parameter>
>> >>      -->
>> >>
>> >>     <!-- Class name for the official MySQL
>> >> Connector/J driver -->
>> >>     <parameter>
>> >>        <name>driverClassName</name>
>> >>        <value>com.mysql.jdbc.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/fyptest?autoReconnect=true</value>
>> >>     </parameter>
>> >>   </ResourceParams>
>> >> </Context>
>> >>
>> >> web.xml file:
>> >>
>> >>   <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>
>> >>
>> >
>> >
>> > __________________________________________________
>> > Do You Yahoo!?
>> > Tired of spam?  Yahoo! Mail has the best spam
>> protection around
>> > http://mail.yahoo.com
>> >
>> >
>>
> ---------------------------------------------------------------------
>> > To unsubscribe, e-mail:
>> users-unsubscribe@tomcat.apache.org
>> > For additional commands, e-mail:
>> users-help@tomcat.apache.org
>> >
>
>
> __________________________________________________
> Do You Yahoo!?
> Tired of spam?  Yahoo! Mail has the best spam protection around
> http://mail.yahoo.com
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: users-help@tomcat.apache.org
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Mime
View raw message