tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Daniel Mikusa <dmik...@gopivotal.com>
Subject Re: SQLNestedException in Connection Pooling With Tomcat 7.0.39
Date Fri, 04 Apr 2014 11:46:44 GMT
On Apr 4, 2014, at 1:19 AM, Saurabh Saraswat <ssaraswat@pivotalindia.com> wrote:

> Dear All,
> 
> I am doing connection pooling with tomcat 7.0.39 and MySQL 5.5.After
> searching on google and with your help i have done the below things.
> Even i am able to get the connection successfully using this but getting
> some trouble and exception.
> I am explaining you all steps done by me-
> 
> *1. Have created a context.xml*
> 
> I have put this context.xml in the META-INF folder of my application. but
> when i am deploying the web app to the server then it is not creating its
> copy to ${CATALINA-BASE}/conf/Catalina/locathost. Why is that so ?

There are a couple possibilities.

1.) Look at “deployXML” attribute of your <Host> tag.  If this is set to false,
it will disable parsing the context XML descriptor embedded inside the application.  This
defaults to true, unless you are running with a security manager, then it defaults to false.

   http://tomcat.apache.org/tomcat-7.0-doc/config/host.html#Standard_Implementation

2.) Look at the “copyXML" attribute of both your <Host> and <Context> tags.
 This needs to be set to true, because the default in Tomcat 7 is false.

   http://tomcat.apache.org/tomcat-7.0-doc/config/host.html#Standard_Implementation
   http://tomcat.apache.org/tomcat-7.0-doc/config/context.html#Standard_Implementation

If both attributes are set properly, you should see the META-INF/context.xml file from your
application copied to “$CATALINA_BASE/conf/Catalina/localhost”.  

> 
> But when i am putting this context.xml in ${CATALINA-BASE}/conf folder then
> its working.
> 
> <?xml version="1.0" encoding="UTF-8"?>
> 
> 
> <Context>
>  <Resource name="jdbc/MaxDB" auth="Container" type="javax.sql.DataSource"
>               maxActive="100" maxIdle="30" maxWait="-1"
>               username="root" password="root"
> driverClassName="com.mysql.jdbc.Driver"
> 
> url="jdbc:MySQL://localhost:3306/MaxDB?zeroDateTimeBehavior=convertToNull"/>
> 
> </Context>
> 
> *2. Mapping in web.xml*
> 
> <resource-ref>
> <description>MySql DataSource</description>
> <res-ref-name>jdbc/MaxDB</res-ref-name>
> <res-type>javax.sql.DataSource</res-type>
> <res-auth>Container</res-auth>
> </resource-ref>
> 
> *3. Then on my servlet i am getting the object of connection like this-*
> 
>    private static InitialContext ic;
>    protected static DataSource datasource;
>    private static Context ctx;
> 
> public void doSomeStuff() throws DatabaseException
> {
>       Connection conn = null;
>       try
>       {
>          conn= getConnection();
> 
>          .....................................
>         // do the required stuff
> 
>       }
>       catch (Exception ex)
>        {
> 
>        }
>        finally
>        {
>          conn.close();
>        }
> 
> }
> 
> *4. This is the method in my DAO Class i am using this method to get the
> object of connection at all of my servlet.*
> 
>   protected static Connection getConnection() throws DatabaseException
> {
>        Connection conn = null;
>        try
>        {
>            ctx = new InitialContext();
>            datasource = (DataSource)
> ctx.lookup("java:/comp/env/jdbc/MaxDB");
>            conn = datasource.getConnection();
>        }
>        catch (Exception ex)
>        {
> 
>        }
>        return conn;
>    }
> 
> Using all this i am able to get connection. But if number of hits increases
> to the server and Initially i got the the below exception-
> 
> *org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot get a connection,
> pool error Timeout waiting for idle object*

This means it was unable to get a connection from the pool within “maxWait” ms.  There
are a few reasons this could happen, but I’d guess it’s because of the next error that
you reported.

> 
> Then i got the exception-
> 
> *org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create
> PoolableConnectionFactory (Access denied for user 'root'@'localhost' (using
> password: YES))*

Seems like you can’t connect to the database.  Have you double checked your user / password
/ host configuration info?

Dan

> 
> Please assist me to know the root cause of the problem. I have searched it
> on google and have read lots of forum but did not get the satisfactory
> answer.
> 
> Hope that you all are expert and your suggestion will be valuable for me.
> 
> Thanking You!
> 
> *Best Regards,    *
> 
> *Saurabh Sarasvat*


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


Mime
View raw message