2016-10-31 20:08 GMT+01:00 Zachary Bedell <[email protected]>: > We're not a maven shop, alas... Ant and lots of Ivy magic to get a build > working outside. > >
> I *suspect* it's either the datasource-in-ear or the custom implementation > of org.apache.openejb.cipher.PasswordCipher we're using that's the > cause. I'll see if I can steal some time this week to factor those two out > to confirm one way or the other & let you know. > > If we are on the bet side of things I'll bet neither of both since the ciphering happens in a completely part of the code and ear or not it should reuse the same factory so jmx registration. Testing with a war or just removing it from the ear and using tomee.xml can confirm it or not BTW. > -Zac > > > On Oct 31, 2016, at 14:33, Romain Manni-Bucau <[email protected]> > wrote: > > > > 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 > >>>> > >>>> > >> > >> > >
