2016-07-26 22:15 GMT+02:00 Edoardo Panfili <[email protected]>:

> Il 26/07/16 20:48, Romain Manni-Bucau ha scritto:
>
> 2016-07-26 20:43 GMT+02:00 Edoardo Panfili <[email protected]>:
>>
>> Thank you for you propt response,
>>>
>>> Il 26/07/16 20:24, Romain Manni-Bucau ha scritto:
>>>
>>> Hi Edoardo,
>>>>
>>>>
>>>> The "unusedProperty" is logged by tomee saying the setter doesn't exist
>>>> and
>>>> therefore the setting is just ignored.
>>>>
>>>> Yes, the proble is that I'd like to use that property.
>>>
>>> The "is not used in DBCP2" comes from
>>>> tomcat org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory (tomcat-dbcp)
>>>> which is a dbcp bridge between tomcat config and their shade.
>>>>
>>>> Issue is tomee will wrap the tomcat resources - originally to add tomee
>>>> features on tomcat defined datasources but since we upgraded to tomcat 8
>>>> not sure it makes much sense anymore - and uses tomee factory (to allow
>>>> you
>>>> to get jta support, sql logging etc...) once the webapp is deployed but
>>>> will also ensure resources are available before the webapp is deployed
>>>> to
>>>> make it available to startup events/beans. In other words you can end up
>>>> using both kind of resources.
>>>>
>>>> The workaround is to not use singleton as resource for the datasource
>>>> (but
>>>> means it will create one instance per lookup) since the boot will not
>>>> eagerly create the datasource the tomcat way and then you just have the
>>>> tomee factory to configure.
>>>>
>>>> How to do that? One instance of datasource every time I use
>>> Context.lookup()?
>>>
>>
>> singleton="false" I think
>>
>> Object ds1 = lookup();
>> Object ds2 = lookup();
>>
>> and you will get ds1 != ds2 where singleton=true will make it equals.
>>
> I found (only now) the reference here:
> https://tomcat.apache.org/tomcat-8.5-doc/config/context.html
> I've read only:
> https://tomcat.apache.org/tomcat-8.5-doc/jdbc-pool.html
>
> I'm trying to understand: I did some tests using
> -----------------------------------------------------
> <Resource name="jdbc/test1" auth="Container" type="javax.sql.DataSource"
>     initialSize="4" maxActive="10" maxIdle="5" minIdle="3" maxWait="300"
>     username="testuser" password="testpassword"
> driverClassName="org.postgresql.Driver"
>     url="jdbc:postgresql://127.0.0.1:5432/testdb"
>     removeAbandoned="true" removeAbandonedTimeout="60" logAbandoned="true"
> />
> -----------------------------------------------------
>
> and adding some code to my test web service:
> -----------------------------------------------------
> DataSource pool1 = (DataSource) env.lookup("jdbc/test1");
> DataSource pool2 = (DataSource) env.lookup("jdbc/test1");
> sb.append("<p> compare = "+(pool1==pool2)+"</p>");
> -----------------------------------------------------
>
> - with no singleton attribute I got warnings and the message
> compare = true
> the pool contains 10 connections (as per maxActive attribute, despite the
> warning)
>
> - using singleton="true" I got warnings and the message
> compare = true
> the pool contains 10 connections (as per maxActive attribute, despite the
> warning)
>
> - using singleton="false" I got *no* warnings and the message
> compare = true
> the pool contains 10 connections (as per maxActive attribute)
>
>
likely cause you do the lookup once tomee switch the resource definition
and singleton is ignored there (all are singleton)


if you log ds.getClass() you will get org.apache.openejb* or
org.apache.tomcat* output and check that I think.


>
> I did a mistake misunderstanding the measure unit of
> removeAbandonedTimeout, using 60 (1 minute) I can see the logs of removed
> connections despite the value of "singleton" and the warnings.
>
> thank you again to all
> I will try also using resources.xml
>
> Edoardo
>
>

Reply via email to