2016-10-28 23:52 GMT+02:00 Gurkan Erdogdu <[email protected]>: > > This is not true...depends 1. the usage, 2. the type of datasource > > > > Also note we don't use dbcp but dbcp2 which got updated compared to dbcp > 1on several aspect > I mean dbcp2 and it is a some bit preference to use dbcp2 or tomcat jdbc. > But from our experience tomcat-jdbc is much faster and easy to work/debug > Could you give some example scenario of using dbcp2 against tomcat jdbc? > > Both have the same speed more or less when well tuned, in particular using JTA (tomcat-jdbc is a bit faster when not using JTA).
In term of usage several libraries will integrate better with dbcp (just more widely used/known I think), pooling is a bit easier (think it is for the same reason of knowled of [pool2]). Found that http://thread.gmane.org/gmane.comp.jakarta.tomcat.user/242205 which is close to my experience too. > Gurkan- > > > On 29 Oct 2016, at 00:13, Romain Manni-Bucau <[email protected]> > wrote: > > > > 2016-10-28 23:10 GMT+02:00 Gurkan Erdogdu <[email protected]>: > > > >> Hi > >> > >> DBCP is not a good option against default one Tomcat JDBC Pool. I > suggest > >> to stick with Tomcat JDBC Pool implementation against Common DBCP you > set. > >> You can read more about Tomcat JDBC Pool in here, > >> http://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html < > >> http://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html> > >> > > > > This is not true...depends 1. the usage, 2. the type of datasource > > > > Also note we don't use dbcp but dbcp2 which got updated compared to dbcp > 1 > > on several aspects. > > > > > >> > >> Best > >> Gurkan > >> http://managecat.com <http://managecat.com/> > >> > >>> On 29 Oct 2016, at 00:04, Zachary Bedell <[email protected]> wrote: > >>> > >>> As far as I know, I didn't do anything to change the pooling > >> implementation. > >>> > >>> It does all start working if I add an explicit "DataSourceCreator dbcp" > >> to my datasource definitions in resource.xml. With that, the > datasources > >> section shows up in JMX, and I see all the stats I need. > >>> > >>> I found a suggestion on this page (https://rmannibucau. > >> wordpress.com/2012/08/10/switching-of-datasource-connection-pooling-in- > >> tomeeopenejb/) that adding "openejb.jdbc.datasource-creator = dbcp" to > >> system.properties should do the same globally, but that didn't work for > >> me. Adding that & removing the DataSourceCreator entry went back to no > >> stats. Maybe there's any updated name for that property? > >>> > >>> Not sure what about my config breaks the default configuration, but > this > >> looks like it should do the trick for now. > >>> > >>> Thanks for the pointers! > >>> > >>> -Zac > >>> > >>> > >>> On Oct 28, 2016, at 16:14, Romain Manni-Bucau <[email protected] > >> <mailto:[email protected]>> wrote: > >>> > >>> weird, try to reproduce your setup on github I'll check next week > >>> > >>> only case I'm thiking about is you don't use dbcp or tomcat-jdbc > pooling > >>> > >>> > >>> Romain Manni-Bucau > >>> @rmannibucau <https://twitter.com/rmannibucau> | Blog > >>> <https://blog-rmannibucau.rhcloud.com<https://blog- > >> rmannibucau.rhcloud.com/>> | Old Blog > >>> <http://rmannibucau.wordpress.com<http://rmannibucau.wordpress.com/>> > | > >> Github <https://github.com/rmannibucau> | > >>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | JavaEE Factory > >>> <https://javaeefactory-rmannibucau.rhcloud.com<https: > >> //javaeefactory-rmannibucau.rhcloud.com/>> > >>> > >>> 2016-10-28 22:12 GMT+02:00 Zachary Bedell <[email protected] > <mailto:z > >> [email protected]>>: > >>> > >>> That doesn't exist for me at all in jconsole. > >>> > >>> Screenshot: http://imgur.com/a/5mMgz > >>> > >>> If I enumerate JMX using an ObjectName of "openejb.management:*" with > >>> something like the code below, there's no "datasources" in any of the > >> found > >>> objects. Nothing matching the names of my pools either. > >>> > >>> final ObjectName name = new ObjectName("openejb.management:*"); > >>> final Set<ObjectInstance> search = mbeanServer.queryMBeans(name, null); > >>> for(final ObjectInstance objectInstance : search) { > >>> System.out.println(objectInstance.getObjectName().getCanonicalName()); > >>> } > >>> > >>> -Zac > >>> > >>> On Oct 28, 2016, at 15:55, Romain Manni-Bucau <[email protected] > >> <mailto:[email protected]> > >>> <mailto:[email protected]>> wrote: > >>> > >>> openejb.management > datasources > >>> > >>> > >>> > >>> Romain Manni-Bucau > >>> @rmannibucau <https://twitter.com/rmannibucau> | Blog > >>> <https://blog-rmannibucau.rhcloud.com<https://blog- > >> rmannibucau.rhcloud.com/>> | Old Blog > >>> <http://rmannibucau.wordpress.com<http://rmannibucau.wordpress.com/>> > | > >> Github <https://github.com/ > >>> rmannibucau> | > >>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | JavaEE Factory > >>> <https://javaeefactory-rmannibucau.rhcloud.com<https: > >> //javaeefactory-rmannibucau.rhcloud.com/>> > >>> > >>> 2016-10-28 21:41 GMT+02:00 Zachary Bedell <[email protected] > <mailto:z > >> [email protected]><mailto:z > >>> [email protected]<mailto:[email protected]>>>: > >>> > >>> Would the stats show up in a different part of the tree? I don't see > the > >>> datasources entry at all under openejb.management. > >>> > >>> I can find DataSourceFactory objects under: > >>> > >>> Catalina:class=org.apache.openejb.resource.jdbc. > DataSourceFactory,name=" > >>> EARNAME/POOLNAME",resourcetype=Global,type=Resource > >>> > >>> > >>> The DataSource's themselves show up in every WAR they're injected into: > >>> > >>> Catalina:type=DataSource,host=localhost,context=/WARNAME, > >>> class=javax.sql.DataSource,name="openejb/Resource/POOLNAME" > >>> > >>> > >>> Neither the DataSource nor DataSourceFactory expose anything that looks > >>> like active or max connections. > >>> > >>> We're trying pretty hard to keep everything related to the app in its > own > >>> EAR rather than globally in tomee.xml. So far the only thing we have > in > >>> tomee.xml is a <Deployments dir="X"/> entry where we're dropping the > >> EAR's. > >>> > >>> -Zac > >>> > >>> On Oct 28, 2016, at 15:28, Romain Manni-Bucau <[email protected] > >> <mailto:[email protected]> > >>> <mailto:[email protected]>> > >>> wrote: > >>> > >>> they are, name is just prefixed with app name > >>> > >>> > >>> Romain Manni-Bucau > >>> @rmannibucau <https://twitter.com/rmannibucau> | Blog > >>> <https://blog-rmannibucau.rhcloud.com<https://blog- > >> rmannibucau.rhcloud.com/>> | Old Blog > >>> <http://rmannibucau.wordpress.com<http://rmannibucau.wordpress.com/>> > | > >> Github <https://github.com/ > >>> rmannibucau> | > >>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | JavaEE Factory > >>> <https://javaeefactory-rmannibucau.rhcloud.com<https: > >> //javaeefactory-rmannibucau.rhcloud.com/>> > >>> > >>> 2016-10-28 21:14 GMT+02:00 Adam Cornett <[email protected]< > mailto: > >> [email protected]><mailto: > >>> [email protected]<mailto:[email protected]>>>: > >>> > >>> Perhaps, my datasources are defined at the container level > >>> (conf/tomee.xml). Perhaps the app level data sources are not registered > >>> in > >>> JMX. > >>> Romain or another dev would need to speak to that. > >>> > >>> On Fri, Oct 28, 2016 at 2:29 PM, Zachary Bedell <[email protected] > >> <mailto:[email protected]> > >>> <mailto:[email protected]>> > >>> wrote: > >>> > >>> Yes to TomEE 7.0.1, but I don't see a datasources entry under > >>> openejb.management in jconsole. I've got Invocations, JAX-RS, JAX-WS, > >>> Pool, TransactionManager, and containers. > >>> > >>> Guessing maybe the way I define the datasources may be relevant? > >>> They're > >>> in a resources.xml file inside an EAR. Defined like: > >>> > >>> <Resource id="ucmsTXPool" type="DataSource"> > >>> JdbcDriver oracle.jdbc.xa.client.OracleXADataSource > >>> JdbcUrl ${ucmsTXPool.JdbcUrl} > >>> User ${ucmsTXPool.User} > >>> UserName ${ucmsTXPool.User} > >>> VaultPassword ${ucmsTXPool.Password} > >>> InitialSize ${ucmsTXPool.InitialSize} > >>> MaxActive ${ucmsTXPool.MaxActive} > >>> MaxIdle 10 > >>> MaxWait 15000 > >>> ValidationQuery "SELECT sysdate FROM DUAL" > >>> TestOnBorrow true > >>> TestOnReturn true > >>> TestWhileIdle true > >>> TimeBetweenEvictionRunsMillis 60000 > >>> AccessToUnderlyingConnectionAllowed true > >>> JtaManaged true > >>> </Resource> > >>> > >>> The ${...} are loaded from a config repository via a Listener in > >>> server.xml. The VaultPassword is handled via custom PasswordCipher > >>> registered via META-INF/org.apache.openejb.cipher.PasswordCipher in a > >>> jar > >>> in server/lib. > >>> > >>> -Zac > >>> > >>> On Oct 28, 2016, at 14:09, Adam Cornett <[email protected]< > mailto: > >> [email protected]><mailto: > >>> [email protected]<mailto:[email protected]>>> > >>> wrote: > >>> > >>> Sure: > >>> openejb.management/datasources/[DSNAME] should have attributes such > >>> as: > >>> Size, Idle, WaitCount, etc. > >>> > >>> There should be an object for each datasource defined in your > >>> tomee.xml > >>> file. I'm assuming you're on TomEE 7? > >>> > >>> On Fri, Oct 28, 2016 at 2:03 PM, Zachary Bedell <[email protected] > >> <mailto:[email protected]> > >>> <mailto:[email protected]> > >>> > >>> wrote: > >>> > >>> Adam, your image didn't come through the list, at least for me. Can > >>> you > >>> give me a textual path to where you're looking? > >>> > >>> > >>> The only thing listed as openejb under mbeans is > >>> "openejb.management." > >>> There's nothing under there that matches the names of any of my > >>> pools. > >>> The > >>> only matches for "datasource" I see are the containers for the > >>> stateless, > >>> stateful, singleton, and managed beans. The only pool related stuff > >>> I > >>> see > >>> under there is for the EJB instances. > >>> > >>> I see an "Active" attribute under the TransactionManager, but that's > >>> not > >>> per-pool, and I'm not sure that it represents all of the JDBC > >>> connections > >>> as opposed to an EJB container transaction. We'd have EJB's that are > >>> set > >>> @TransactionAttribute(NOT_SUPPORTED) as well as single transactions > >>> that > >>> touch several connection pools (XA), so active transactions from the > >>> container's point of view isn't granular enough to know if one of the > >>> pools > >>> is running low. > >>> > >>> -Zac > >>> > >>> > >>> > >>> > >>> On Oct 28, 2016, at 13:30, Adam Cornett <[email protected]< > mailto: > >> [email protected]><mailto: > >>> [email protected]<mailto:[email protected]>>< > >>> mailto: > >>> [email protected]<mailto:[email protected]><mailto: > >> [email protected]>>> wrote: > >>> > >>> Here is a screenshot out of jconsole showing the location and > >>> attributes: > >>> > >>> > >>> On Fri, Oct 28, 2016 at 1:21 PM, Romain Manni-Bucau < > >>> [email protected]<mailto:[email protected]><mailto:r > >> [email protected]> > >>> <mailto:[email protected]>> wrote: > >>> Hi Zachary, > >>> > >>> 2016-10-28 19:18 GMT+02:00 Zachary Bedell <[email protected] > <mailto:z > >> [email protected]> > >>> <mailto: > >>> z > >>> [email protected]<mailto:[email protected]><mailto:bedel > >> [email protected]>>>: > >>> > >>> Good afternoon, > >>> > >>> I'm working on a monitoring agent for TomEE to plugin to an in-house > >>> package we use. One of the most common failures in our current app > >>> server > >>> (JBoss) usually manifests as expended JDBC connection pools, so we > >>> alert > >>> as > >>> pools approach full to get some kind of warning of impending doom > >>> when > >>> the > >>> database can't keep up. > >>> > >>> I need to get a handle on TomEE's datasource pools to check their > >>> maximum > >>> size & current active connection count programatically. I've tried > >>> searching through both JMX (how we do it in JBoss) and the JNDI > >>> tree. > >>> I > >>> can find the javax.sql.DataSource in both trees as well as a > >>> reference > >>> to > >>> org.apache.openejb.resource.jdbc.DataSourceFactory in JMX. It > >>> doesn't > >>> appear any of the objects I've been able to find expose a count of > >>> active > >>> connections nor what the configured maximum is. > >>> > >>> > >>> in openejb MBeans it should be there > >>> > >>> > >>> Is there a way to get the count of active connections & the > >>> configured > >>> max > >>> for a named connection pool (I can find the names via JMX or JNDI) > >>> or > >>> for > >>> all connection pools? > >>> > >>> > >>> > >>> Thanks in advance, > >>> Zac Bedell > >>> > >>> > >>> > >>> > >>> > >>> -- > >>> Adam Cornett > >>> [email protected]<mailto:[email protected]><mailto: > >> [email protected]><mailto: > >>> [email protected]<mailto:[email protected]>> > >>> (678) 296-1150 > >>> > >>> > >>> > >>> > >>> -- > >>> Adam Cornett > >>> [email protected]<mailto:[email protected]><mailto: > >> [email protected]> > >>> (678) 296-1150 > >>> > >>> > >>> > >>> > >>> -- > >>> Adam Cornett > >>> [email protected]<mailto:[email protected]><mailto: > >> [email protected]> > >>> (678) 296-1150 > >>> > > > >
