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:[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:[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:[email protected]> <mailto:[email protected]>> wrote: Hi Zachary, 2016-10-28 19:18 GMT+02:00 Zachary Bedell <[email protected]<mailto:[email protected]> <mailto: z [email protected]<mailto:[email protected]><mailto:[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
