if you can share a project i can run with "mvn package tomee:run" I can sort it out for you if it helps
Romain Manni-Bucau @rmannibucau <https://twitter.com/rmannibucau> | Blog <https://blog-rmannibucau.rhcloud.com> | Old Blog <http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> | LinkedIn <https://www.linkedin.com/in/rmannibucau> | JavaEE Factory <https://javaeefactory-rmannibucau.rhcloud.com> 2016-10-31 18:27 GMT+01:00 Zachary Bedell <[email protected]>: > I tried some variations just to get an idea of what's actually the magic > thing that's making my config (not) work. > > 1) > resource.xml: > DataSourceCreator dbcp > # JmxEnabled absent -- default value > > system.properties: > No setting for datasource-creator > > RESULT: Works. Attributes visible in JMX under "openejb.management: > DataSource=UCMSSecurity/ucsSecurityKeystore,ObjectType=datasources" > > > 2) > resource.xml: > # DataSourceCreator absent -- default value > JmxEnabled true > > system.properties: > No setting for datasource-creator > > RESULT: Fails. Nothing in JMX for the datasources. > > > 3) > resource.xml: > # DataSourceCreator absent -- default value > # JmxEnabled -- default value > > system.properties: > openejb.jdbc.datasource-creator = *anything* > > RESULT: Fails. > > I tried dbcp, org.apache.tomee.jdbc.TomEEDataSourceCreator, tomcat-dbcp, > as well as complete gibberish for the setting in system.properties. In all > cases, the log message came out as: > > 13:07:18,631 INFO [options] Using 'openejb.jdbc.datasource- > creator=org.apache.tomee.jdbc.TomEEDataSourceCreator' > > (I'm using log4j, thus different formatting on the logs.) > > The string "datasource-creator" doesn't appear anywhere in my distribution > other than system.properties and the log files, so I don't see how anything > else could be setting that value. The setting in system.properties appears > to be ignored. > > > I can run with case #1 now, explicitly setting the datasource creator in > each datasource. I'm getting the stats I need that way. If there's any > other info I can provide to figure out why the setting is being ignored, > let me know. > > Thanks again for the help! > > -Zac > > > > > On Oct 28, 2016, at 17:08, Romain Manni-Bucau <[email protected]> > wrote: > > > > still openejb.jdbc.datasource-creator and it should even be logged > during > > startup: > > > > Feb 07, 2014 10:40:05 PM org.apache.openejb.util.OptionsLog info > > INFO: Using 'openejb.jdbc.datasource-creator=org.apache.tomee.jdbc. > TomEEDataSourceCreator' > > > > you can give a try to add jmxEnabled=true to your datasource properties > but > > should be the default > > > > > > > > Romain Manni-Bucau > > @rmannibucau <https://twitter.com/rmannibucau> | Blog > > <https://blog-rmannibucau.rhcloud.com> | Old Blog > > <http://rmannibucau.wordpress.com> | Github <https://github.com/ > rmannibucau> | > > LinkedIn <https://www.linkedin.com/in/rmannibucau> | JavaEE Factory > > <https://javaeefactory-rmannibucau.rhcloud.com> > > > > 2016-10-28 23:04 GMT+02:00 Zachary Bedell <[email protected]>: > > > >> 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 > >> > >> > >
