You can use the other one: » ./bin/tomee.sh setters -c 'org.apache.tomee.jdbc.TomEEDataSourceCreator$TomEEDataSource' - AbandonWhenPercentageFull - AccessToUnderlyingConnectionAllowed - AlternateUsernameAllowed - CommitOnReturn - ConnectionProperties - DataSource - DataSourceJNDI - DbProperties - DefaultAutoCommit - DefaultCatalog - DefaultReadOnly - DefaultTransactionIsolation - DriverClassName - FairQueue - IgnoreExceptionOnPreLoad - InitSQL - InitialSize - JdbcInterceptors - JmxEnabled - LogAbandoned - LogValidationErrors - LogWriter - LoginTimeout - MaxActive - MaxAge - MaxIdle - MaxWait - MinEvictableIdleTimeMillis - MinIdle - Name - NumTestsPerEvictionRun - Password - PoolProperties - PropagateInterruptState - RemoveAbandoned - RemoveAbandonedTimeout - RollbackOnReturn - SuspectTimeout - TestOnBorrow - TestOnConnect - TestOnReturn - TestWhileIdle - TimeBetweenEvictionRunsMillis - Url - UseDisposableConnectionFacade - UseEquals - UseLock - Username - ValidationInterval - ValidationQuery - ValidationQueryTimeout - Validator - ValidatorClassName
Used the other one to avoid the bash issue with $ and to need to escape it but it browses the public API so both share the same Romain Manni-Bucau @rmannibucau <https://twitter.com/rmannibucau> | Blog <https://blog-rmannibucau.rhcloud.com> | Old Wordpress Blog <http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> | LinkedIn <https://www.linkedin.com/in/rmannibucau> | Tomitriber <http://www.tomitribe.com> | JavaEE Factory <https://javaeefactory-rmannibucau.rhcloud.com> 2016-07-28 9:50 GMT+02:00 Edoardo Panfili <[email protected]>: > Il 27/07/16 16:54, Romain Manni-Bucau ha scritto: > > 2016-07-27 16:51 GMT+02:00 Edoardo Panfili <[email protected]>: >> >> Il 27/07/16 07:19, Romain Manni-Bucau ha scritto: >>> >>> Yes, (tomee/openejb is the same project): you got the replaced instance >>>> so >>>> lookup happens too late to get tomcat instance. >>>> >>>> Very minimal working configurations: >>> >>> The below $webapp/META-INF/context.xml configuration works with no >>> warnings >>> <Context> >>> <Resource name="pool1" auth="Container" type="javax.sql.DataSource" >>> singleton="false" >>> url="jdbc:postgresql://127.0.0.1:5432/testdb" >>> username="testuser" password="testpassword" >>> driverClassName="org.postgresql.Driver" >>> initialSize="3" maxActive="10" maxWait="300" maxIdle="10" >>> removeAbandoned="true" removeAbandonedTimeout="60" >>> logAbandoned="true" /> >>> </Context> >>> in TomEE+ 7.0 uses >>> org.apache.tomee.jdbc.TomEEDataSourceCreator$TomEEDataSource >>> Tomcat 8.0 uses instead org.apache.tomcat.dbcp.dbcp2.BasicDataSource >>> >>> Also the equivalent $webapp/WEB-INF/resources.xml works >>> <tomee> >>> <Resource id="pool2" type="javax.sql.DataSource"> >>> jdbcDriver = org.postgresql.Driver >>> jdbcUrl = jdbc:postgresql://127.0.0.1:5432/testdb >>> jtaManaged = false >>> maxActive = 10 >>> maxWaitTime = 10 seconds >>> minIdle = 3 >>> maxIdle = 10 >>> password = testpassword >>> userName = testuser >>> removeAbandoned = true >>> removeAbandonedTimeout = 30 >>> logAbandoned = true >>> </Resource> >>> </tomee> >>> >>> the last three properties are not documented at >>> http://tomee.apache.org/datasource-config.html >>> but are printed by dataSource.toString() >>> >>> >>> Well since tomee supports dynamic pool impl now the pool doc is mainly on >> the related pool website. >> >> Once quick way to check what you can use is to rely on setters command >> with >> the pool class: >> >> $ ./bin/tomee.sh setters -c org.apache.tomcat.jdbc.pool.DataSource >> > this works fine, thank you again... but I am a little bit confused: > > I have to ask for "org.apache.tomcat.jdbc.pool.DataSource" because is a > superclass of > "org.apache.tomee.jdbc.TomEEDataSourceCreator$TomEEDataSource" ? > > Edoardo > > > > > >> thank you for all the help >>> Edoardo >>> >>> >>> >>> Le 27 juil. 2016 06:53, "Edoardo Panfili" <[email protected]> a écrit : >>> >>>> Il 27/07/16 00:11, Romain Manni-Bucau ha scritto: >>>> >>>>> 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. >>>>>> >>>>>> org.apache.tomee.jdbc.TomEEDataSourceCreator$TomEEDataSource >>>>>> >>>>> Edoardo >>>>> >>>>> >>>>> 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 >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >
