You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Avinash Krishnan <av...@gmail.com> on 2017/07/18 10:26:28 UTC
Tomcat 8 Connection Pooling
I am trying to implement Apache Tomcat 8.5.15 "Tomcat JDBC Connection
Pool" using the steps mentioned in the guide.
Can some one help me to understand how this connection pooling has to be
done.
Is the Plain Java Method,by implementing Pool Properties is an alternative
to the JNDI lookup based pooling ? When I implement using Pool Properties,
there isn't any provision to set up the Factory to
org.apache.tomcat.jdbc.pool.DataSourceFactory"
and I always get invalid arguments in call.
On a different note, I tried by adding to context.xml . And implementing
JNDI lookup from context. But that time,I get
"org.apache.tomcat.dbcp.dbcp2.BasicDataSource cannot be cast to
org.apache.tomcat.jdbc.pool.DataSource" even after setting factory to
DataSourceFactory.
--
Regards,
Avinash K
Re: Tomcat 8 Connection Pooling
Posted by Riccardo Cohen <ri...@e5group.fr>.
You'll find here :
http://www.5flow.com/tmp/tomcatjndidb.zip
a very small sample that works on my computer (with IntelliJ project).
Just change the context.xml with your database. Viewing the home page
will create a database, insert records, then display them.
The data source is of type javax.sql.datasource and this is the database
connection pool. In mysql console, do : show processlist;
when reloading the home page of the sample you can see that the
connection has always the same id. But if you restart tomcat the id
changes. This means that tomcat keeps the connection to the db in a pool
instead of creating a new connection at each ds.getConnection();
On 19/07/2017 06:03, Avinash Krishnan wrote:
> Hello Riccardo,
>
> When I try using the pool properties(Without JNDI ) it gives me URL Cannot
> Be null error. What I have understood is that, when we make the data source
> as a static variable or a member variable of another class and try to use
> it another class's function it throws error. If I instantiate and use Data
> Souce on same function it is working.
>
> I am wondering how to use the JNDI based Tomcat JDBC Connection Pool.
> If I use Context variable and instantiate DataSouce object,the object
> should be of type javax.sql.datasource and we don't get the
> latest org.apache.tomcat.jdbc.pool.DataSource;.
>
> Any idea find the exact way to implement JNDI usage of
> new org.apache.tomcat.jdbc.pool.DataSource; ?
>
> On Tue, Jul 18, 2017 at 9:02 PM, Riccardo Cohen <ri...@e5group.fr>
> wrote:
>
>> Can you see any info in the log : login incorrect, database not found etc.
>> ?
>> (There are many logs in tomcat : localhost log, catalina log, manager log,
>> host manager log, localhost access log)
>>
>>
>> On 18/07/2017 13:55, Avinash Krishnan wrote:
>>
>>> Hello Riccardo ,
>>>
>>> Thanks for the response. This didn't work for me. Connections are not
>>> getting initated and I am seeing java.lang.NullPointerException on
>>> accessing getConnection.
>>>
>>> I am refering to http://tomcat.apache.org/tomcat-8.0-doc/jdbc-pool.html
>>>
>>> The pool properties is also not working.
>>>
>>> On Tue, Jul 18, 2017 at 4:18 PM, Riccardo Cohen <
>>> riccardo.cohen@e5group.fr>
>>> wrote:
>>>
>>> Hello Avinash
>>>>
>>>> I'm not expert but this is rather simple :
>>>> in web/META-INF/context.xml write something like :
>>>>
>>>> <Context>
>>>> <Resource name="jdbc/tomcattest"
>>>> type="javax.sql.DataSource"
>>>> username="root"
>>>> password="pass"
>>>> driverClassName="com.mysql.jdbc.Driver"
>>>>
>>>> url="jdbc:mysql://localhost:3306/databasename?useSSL=false&
>>>> amp;zeroDateTimeBehavior=convertToNull&jdbcCompliantTrun
>>>> cation=false&characterEncoding=utf8"
>>>> />
>>>> </Context>
>>>>
>>>> in web/WEB-INF/web.xml add in <web-app> tag :
>>>> <resource-ref>
>>>> <res-ref-name>
>>>> jdbc/tomcattest
>>>> </res-ref-name>
>>>> <res-type>
>>>> javax.sql.DataSource
>>>> </res-type>
>>>> </resource-ref>
>>>>
>>>> and in a java class add this :
>>>>
>>>> public class T3Servlet extends HttpServlet
>>>> {
>>>> @Resource(name="jdbc/tomcattest")
>>>> public DataSource ds;
>>>>
>>>>
>>>> You will normally have a data source in your class, by injection, using
>>>> tomcat database pool.
>>>>
>>>>
>>>> On 18/07/2017 12:26, Avinash Krishnan wrote:
>>>>
>>>> I am trying to implement Apache Tomcat 8.5.15 "Tomcat JDBC Connection
>>>>> Pool" using the steps mentioned in the guide.
>>>>>
>>>>> Can some one help me to understand how this connection pooling has to be
>>>>> done.
>>>>>
>>>>> Is the Plain Java Method,by implementing Pool Properties is an
>>>>> alternative
>>>>> to the JNDI lookup based pooling ? When I implement using Pool
>>>>> Properties,
>>>>> there isn't any provision to set up the Factory to
>>>>> org.apache.tomcat.jdbc.pool.DataSourceFactory"
>>>>> and I always get invalid arguments in call.
>>>>>
>>>>> On a different note, I tried by adding to context.xml . And implementing
>>>>> JNDI lookup from context. But that time,I get
>>>>> "org.apache.tomcat.dbcp.dbcp2.BasicDataSource cannot be cast to
>>>>> org.apache.tomcat.jdbc.pool.DataSource" even after setting factory to
>>>>> DataSourceFactory.
>>>>>
>>>>>
>>>>> --
>>>> Riccardo Cohen
>>>> +33 6 09 83 64 49
>>>> E5Group
>>>> http://www.5flow.com
>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
>>>> For additional commands, e-mail: users-help@tomcat.apache.org
>>>>
>>>>
>>>>
>>>
>>>
>> --
>> Riccardo Cohen
>> +33 6 09 83 64 49
>> E5Group
>> http://www.5flow.com
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
>> For additional commands, e-mail: users-help@tomcat.apache.org
>>
>>
>
>
--
Riccardo Cohen
+33 6 09 83 64 49
E5Group
http://www.5flow.com
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org
Re: Tomcat 8 Connection Pooling
Posted by Avinash Krishnan <av...@gmail.com>.
Hello Riccardo,
When I try using the pool properties(Without JNDI ) it gives me URL Cannot
Be null error. What I have understood is that, when we make the data source
as a static variable or a member variable of another class and try to use
it another class's function it throws error. If I instantiate and use Data
Souce on same function it is working.
I am wondering how to use the JNDI based Tomcat JDBC Connection Pool.
If I use Context variable and instantiate DataSouce object,the object
should be of type javax.sql.datasource and we don't get the
latest org.apache.tomcat.jdbc.pool.DataSource;.
Any idea find the exact way to implement JNDI usage of
new org.apache.tomcat.jdbc.pool.DataSource; ?
On Tue, Jul 18, 2017 at 9:02 PM, Riccardo Cohen <ri...@e5group.fr>
wrote:
> Can you see any info in the log : login incorrect, database not found etc.
> ?
> (There are many logs in tomcat : localhost log, catalina log, manager log,
> host manager log, localhost access log)
>
>
> On 18/07/2017 13:55, Avinash Krishnan wrote:
>
>> Hello Riccardo ,
>>
>> Thanks for the response. This didn't work for me. Connections are not
>> getting initated and I am seeing java.lang.NullPointerException on
>> accessing getConnection.
>>
>> I am refering to http://tomcat.apache.org/tomcat-8.0-doc/jdbc-pool.html
>>
>> The pool properties is also not working.
>>
>> On Tue, Jul 18, 2017 at 4:18 PM, Riccardo Cohen <
>> riccardo.cohen@e5group.fr>
>> wrote:
>>
>> Hello Avinash
>>>
>>> I'm not expert but this is rather simple :
>>> in web/META-INF/context.xml write something like :
>>>
>>> <Context>
>>> <Resource name="jdbc/tomcattest"
>>> type="javax.sql.DataSource"
>>> username="root"
>>> password="pass"
>>> driverClassName="com.mysql.jdbc.Driver"
>>>
>>> url="jdbc:mysql://localhost:3306/databasename?useSSL=false&
>>> amp;zeroDateTimeBehavior=convertToNull&jdbcCompliantTrun
>>> cation=false&characterEncoding=utf8"
>>> />
>>> </Context>
>>>
>>> in web/WEB-INF/web.xml add in <web-app> tag :
>>> <resource-ref>
>>> <res-ref-name>
>>> jdbc/tomcattest
>>> </res-ref-name>
>>> <res-type>
>>> javax.sql.DataSource
>>> </res-type>
>>> </resource-ref>
>>>
>>> and in a java class add this :
>>>
>>> public class T3Servlet extends HttpServlet
>>> {
>>> @Resource(name="jdbc/tomcattest")
>>> public DataSource ds;
>>>
>>>
>>> You will normally have a data source in your class, by injection, using
>>> tomcat database pool.
>>>
>>>
>>> On 18/07/2017 12:26, Avinash Krishnan wrote:
>>>
>>> I am trying to implement Apache Tomcat 8.5.15 "Tomcat JDBC Connection
>>>> Pool" using the steps mentioned in the guide.
>>>>
>>>> Can some one help me to understand how this connection pooling has to be
>>>> done.
>>>>
>>>> Is the Plain Java Method,by implementing Pool Properties is an
>>>> alternative
>>>> to the JNDI lookup based pooling ? When I implement using Pool
>>>> Properties,
>>>> there isn't any provision to set up the Factory to
>>>> org.apache.tomcat.jdbc.pool.DataSourceFactory"
>>>> and I always get invalid arguments in call.
>>>>
>>>> On a different note, I tried by adding to context.xml . And implementing
>>>> JNDI lookup from context. But that time,I get
>>>> "org.apache.tomcat.dbcp.dbcp2.BasicDataSource cannot be cast to
>>>> org.apache.tomcat.jdbc.pool.DataSource" even after setting factory to
>>>> DataSourceFactory.
>>>>
>>>>
>>>> --
>>> Riccardo Cohen
>>> +33 6 09 83 64 49
>>> E5Group
>>> http://www.5flow.com
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
>>> For additional commands, e-mail: users-help@tomcat.apache.org
>>>
>>>
>>>
>>
>>
> --
> Riccardo Cohen
> +33 6 09 83 64 49
> E5Group
> http://www.5flow.com
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: users-help@tomcat.apache.org
>
>
--
Regards,
Avinash K
+91 9497359324
Re: Tomcat 8 Connection Pooling
Posted by Riccardo Cohen <ri...@e5group.fr>.
Can you see any info in the log : login incorrect, database not found etc. ?
(There are many logs in tomcat : localhost log, catalina log, manager
log, host manager log, localhost access log)
On 18/07/2017 13:55, Avinash Krishnan wrote:
> Hello Riccardo ,
>
> Thanks for the response. This didn't work for me. Connections are not
> getting initated and I am seeing java.lang.NullPointerException on
> accessing getConnection.
>
> I am refering to http://tomcat.apache.org/tomcat-8.0-doc/jdbc-pool.html
>
> The pool properties is also not working.
>
> On Tue, Jul 18, 2017 at 4:18 PM, Riccardo Cohen <ri...@e5group.fr>
> wrote:
>
>> Hello Avinash
>>
>> I'm not expert but this is rather simple :
>> in web/META-INF/context.xml write something like :
>>
>> <Context>
>> <Resource name="jdbc/tomcattest"
>> type="javax.sql.DataSource"
>> username="root"
>> password="pass"
>> driverClassName="com.mysql.jdbc.Driver"
>>
>> url="jdbc:mysql://localhost:3306/databasename?useSSL=false&
>> amp;zeroDateTimeBehavior=convertToNull&jdbcCompliantTrun
>> cation=false&characterEncoding=utf8"
>> />
>> </Context>
>>
>> in web/WEB-INF/web.xml add in <web-app> tag :
>> <resource-ref>
>> <res-ref-name>
>> jdbc/tomcattest
>> </res-ref-name>
>> <res-type>
>> javax.sql.DataSource
>> </res-type>
>> </resource-ref>
>>
>> and in a java class add this :
>>
>> public class T3Servlet extends HttpServlet
>> {
>> @Resource(name="jdbc/tomcattest")
>> public DataSource ds;
>>
>>
>> You will normally have a data source in your class, by injection, using
>> tomcat database pool.
>>
>>
>> On 18/07/2017 12:26, Avinash Krishnan wrote:
>>
>>> I am trying to implement Apache Tomcat 8.5.15 "Tomcat JDBC Connection
>>> Pool" using the steps mentioned in the guide.
>>>
>>> Can some one help me to understand how this connection pooling has to be
>>> done.
>>>
>>> Is the Plain Java Method,by implementing Pool Properties is an alternative
>>> to the JNDI lookup based pooling ? When I implement using Pool Properties,
>>> there isn't any provision to set up the Factory to
>>> org.apache.tomcat.jdbc.pool.DataSourceFactory"
>>> and I always get invalid arguments in call.
>>>
>>> On a different note, I tried by adding to context.xml . And implementing
>>> JNDI lookup from context. But that time,I get
>>> "org.apache.tomcat.dbcp.dbcp2.BasicDataSource cannot be cast to
>>> org.apache.tomcat.jdbc.pool.DataSource" even after setting factory to
>>> DataSourceFactory.
>>>
>>>
>> --
>> Riccardo Cohen
>> +33 6 09 83 64 49
>> E5Group
>> http://www.5flow.com
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
>> For additional commands, e-mail: users-help@tomcat.apache.org
>>
>>
>
>
--
Riccardo Cohen
+33 6 09 83 64 49
E5Group
http://www.5flow.com
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org
Re: Tomcat 8 Connection Pooling
Posted by Avinash Krishnan <av...@gmail.com>.
Hello Riccardo ,
Thanks for the response. This didn't work for me. Connections are not
getting initated and I am seeing java.lang.NullPointerException on
accessing getConnection.
I am refering to http://tomcat.apache.org/tomcat-8.0-doc/jdbc-pool.html
The pool properties is also not working.
On Tue, Jul 18, 2017 at 4:18 PM, Riccardo Cohen <ri...@e5group.fr>
wrote:
> Hello Avinash
>
> I'm not expert but this is rather simple :
> in web/META-INF/context.xml write something like :
>
> <Context>
> <Resource name="jdbc/tomcattest"
> type="javax.sql.DataSource"
> username="root"
> password="pass"
> driverClassName="com.mysql.jdbc.Driver"
>
> url="jdbc:mysql://localhost:3306/databasename?useSSL=false&
> amp;zeroDateTimeBehavior=convertToNull&jdbcCompliantTrun
> cation=false&characterEncoding=utf8"
> />
> </Context>
>
> in web/WEB-INF/web.xml add in <web-app> tag :
> <resource-ref>
> <res-ref-name>
> jdbc/tomcattest
> </res-ref-name>
> <res-type>
> javax.sql.DataSource
> </res-type>
> </resource-ref>
>
> and in a java class add this :
>
> public class T3Servlet extends HttpServlet
> {
> @Resource(name="jdbc/tomcattest")
> public DataSource ds;
>
>
> You will normally have a data source in your class, by injection, using
> tomcat database pool.
>
>
> On 18/07/2017 12:26, Avinash Krishnan wrote:
>
>> I am trying to implement Apache Tomcat 8.5.15 "Tomcat JDBC Connection
>> Pool" using the steps mentioned in the guide.
>>
>> Can some one help me to understand how this connection pooling has to be
>> done.
>>
>> Is the Plain Java Method,by implementing Pool Properties is an alternative
>> to the JNDI lookup based pooling ? When I implement using Pool Properties,
>> there isn't any provision to set up the Factory to
>> org.apache.tomcat.jdbc.pool.DataSourceFactory"
>> and I always get invalid arguments in call.
>>
>> On a different note, I tried by adding to context.xml . And implementing
>> JNDI lookup from context. But that time,I get
>> "org.apache.tomcat.dbcp.dbcp2.BasicDataSource cannot be cast to
>> org.apache.tomcat.jdbc.pool.DataSource" even after setting factory to
>> DataSourceFactory.
>>
>>
> --
> Riccardo Cohen
> +33 6 09 83 64 49
> E5Group
> http://www.5flow.com
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: users-help@tomcat.apache.org
>
>
--
Regards,
Avinash K
+91 9497359324
Re: Tomcat 8 Connection Pooling
Posted by Riccardo Cohen <ri...@e5group.fr>.
Hello Avinash
I'm not expert but this is rather simple :
in web/META-INF/context.xml write something like :
<Context>
<Resource name="jdbc/tomcattest"
type="javax.sql.DataSource"
username="root"
password="pass"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/databasename?useSSL=false&zeroDateTimeBehavior=convertToNull&jdbcCompliantTruncation=false&characterEncoding=utf8"
/>
</Context>
in web/WEB-INF/web.xml add in <web-app> tag :
<resource-ref>
<res-ref-name>
jdbc/tomcattest
</res-ref-name>
<res-type>
javax.sql.DataSource
</res-type>
</resource-ref>
and in a java class add this :
public class T3Servlet extends HttpServlet
{
@Resource(name="jdbc/tomcattest")
public DataSource ds;
You will normally have a data source in your class, by injection, using
tomcat database pool.
On 18/07/2017 12:26, Avinash Krishnan wrote:
> I am trying to implement Apache Tomcat 8.5.15 "Tomcat JDBC Connection
> Pool" using the steps mentioned in the guide.
>
> Can some one help me to understand how this connection pooling has to be
> done.
>
> Is the Plain Java Method,by implementing Pool Properties is an alternative
> to the JNDI lookup based pooling ? When I implement using Pool Properties,
> there isn't any provision to set up the Factory to
> org.apache.tomcat.jdbc.pool.DataSourceFactory"
> and I always get invalid arguments in call.
>
> On a different note, I tried by adding to context.xml . And implementing
> JNDI lookup from context. But that time,I get
> "org.apache.tomcat.dbcp.dbcp2.BasicDataSource cannot be cast to
> org.apache.tomcat.jdbc.pool.DataSource" even after setting factory to
> DataSourceFactory.
>
--
Riccardo Cohen
+33 6 09 83 64 49
E5Group
http://www.5flow.com
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org