Bug 52842 - MBeanDumper dumpBeans SEVERE: Error getting attribute while using JMXProxy servlet
Summary: MBeanDumper dumpBeans SEVERE: Error getting attribute while using JMXProxy se...
Status: RESOLVED FIXED
Alias: None
Product: Tomcat 7
Classification: Unclassified
Component: Manager (show other bugs)
Version: 7.0.26
Hardware: PC Windows Vista
: P2 minor (vote)
Target Milestone: ---
Assignee: Tomcat Developers Mailing List
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-03-06 23:33 UTC by Jonathan Hodges
Modified: 2012-03-08 19:17 UTC (History)
0 users



Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Jonathan Hodges 2012-03-06 23:33:46 UTC
Hi, 

We have been using the following two JMXProxy URLs for monitoring without issue
in 6.0.29. 

http://localhost:8080/manager/jmxproxy/?qry=*:type=Executor,name=tomcatThreadPool


OK - Number of results: 1 

Name: Catalina:type=Executor,name=tomcatThreadPool 
modelerType: org.apache.tomcat.util.modeler.BaseModelMBean 
threadPriority: 5 
queueSize: 0 
corePoolSize: 4 
maxIdleTime: 60000 
threadRenewalDelay: 1000 
minSpareThreads: 4 
activeCount: 1 
maxThreads: 150 
completedTaskCount: 17 
maxQueueSize: 2147483647 
largestPoolSize: 5 
stateName: STARTED 
name: tomcatThreadPool 
poolSize: 3 
namePrefix: catalina-exec- 


http://localhost:8080/manager/jmxproxy/?qry=bean:name=eventingDataSource


OK - Number of results: 1 

Name: bean:name=eventingDataSource 
modelerType: org.apache.tomcat.jdbc.pool.DataSource 
MaxIdle: 100 
JdbcInterceptors:
org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer 
DefaultTransactionIsolation: -1 
ValidationQuery: SELECT 1 FROM dual 
TestOnConnect: false 
Password: Password not available as DataSource/JMX operation. 
AbandonWhenPercentageFull: 0 
TestOnReturn: false 
Username: xxxx 
NumActive: 0 
MinIdle: 10 
PoolSize: 4 
ValidationInterval: 1800000 
Connection:
ProxyConnection[PooledConnection[oracle.jdbc.driver.T4CConnection@17f8b39]] 
NumIdle: 2 
AccessToUnderlyingConnectionAllowed: true 
Url: jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST =
localhost)(PORT = 1580))(CONNECT_DATA =(SERVER = DEDICATED)( SERVICE_NAME =
anywhere.com )(INSTANCE_NAME = xxx)(SID = xxx))) 
Size: 4 
Active: 2 
AlternateUsernameAllowed: false 
TestOnBorrow: true 
LoginTimeout: 6 
MaxActive: 100 
MaxAge: 0 
SuspectTimeout: 0 
Pool: org.apache.tomcat.jdbc.pool.ConnectionPool@9283bf 
NumTestsPerEvictionRun: 0 
Name: Tomcat Connection Pool[1-6300663] 
MaxWait: 6000 
PoolProperties: ConnectionPool[defaultAutoCommit=null; defaultReadOnly=null;
defaultTransactionIsolation=-1; defaultCatalog=null;
driverClassName=oracle.jdbc.driver.OracleDriver; maxActive=100; maxIdle=100;
minIdle=10; initialSize=10; maxWait=6000; testOnBorrow=true;
testOnReturn=false; timeBetweenEvictionRunsMillis=30000;
numTestsPerEvictionRun=0; minEvictableIdleTimeMillis=30000;
testWhileIdle=false; testOnConnect=false; password=xxxxx;
url=jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST =
localhost)(PORT = 1580))(CONNECT_DATA =(SERVER = DEDICATED)( SERVICE_NAME =
anywhere.com )(INSTANCE_NAME = xxx)(SID = xxx))); username=xxx;
validationQuery=SELECT 1 FROM dual; validationInterval=1800000;
accessToUnderlyingConnectionAllowed=true; removeAbandoned=true;
removeAbandonedTimeout=60; logAbandoned=true; connectionProperties=null;
initSQL=null;
jdbcInterceptors=org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer;
jmxEnabled=true; fairQueue=false; useEquals=false; abandonWhenPercentageFull=0;
maxAge=0; useLock=false; dataSource=null; dataSourceJNDI=null;
alternateUsernameAllowed=false; 
PoolName: Tomcat Connection Pool[1-6300663] 
WaitCount: 0 
JmxEnabled: true 
TestWhileIdle: false 
UseEquals: false 
UseLock: false 
DriverClassName: oracle.jdbc.driver.OracleDriver 
RemoveAbandonedTimeout: 60 
DbProperties: {user=xxxx, password=xxxx} 
Idle: 2 
LogAbandoned: true 
FairQueue: false 
PoolSweeperEnabled: true 
ConnectionAsync:
org.apache.tomcat.jdbc.pool.ConnectionPool$ConnectionFuture@e9c2d3 
JdbcInterceptorsAsArray:
Array[org.apache.tomcat.jdbc.pool.PoolProperties$InterceptorDefinition] of
length 2 
       
org.apache.tomcat.jdbc.pool.PoolProperties$InterceptorDefinition@125f027 
       
org.apache.tomcat.jdbc.pool.PoolProperties$InterceptorDefinition@1b99628 
RemoveAbandoned: true 
TimeBetweenEvictionRunsMillis: 30000 
MinEvictableIdleTimeMillis: 30000 
InitialSize: 10 


After upgrading to 7.0.26 the JMXProxy URLs still return the correct data
however I am now seeing the following exceptions in the Tomcat logs. 


Mar 6, 2012 9:17:40 AM org.apache.catalina.mbeans.MBeanDumper dumpBeans 
SEVERE: Error getting attribute Catalina:type=Executor,name=tomcatThreadPool
prestartminSpareThreads 
javax.management.ReflectionException: Cannot find getter method
getPrestartminSpareThreads 
        at
org.apache.tomcat.util.modeler.ManagedBean.getGetter(ManagedBean.java:517) 
        at
org.apache.tomcat.util.modeler.BaseModelMBean.getAttribute(BaseModelMBean.java:181) 
        at
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getAttribute(DefaultMBeanServerInterceptor.java:666) 
        at
com.sun.jmx.mbeanserver.JmxMBeanServer.getAttribute(JmxMBeanServer.java:638) 
        at
org.apache.catalina.mbeans.MBeanDumper.dumpBeans(MBeanDumper.java:82) 
        at
org.apache.catalina.manager.JMXProxyServlet.listBeans(JMXProxyServlet.java:172) 
        at
org.apache.catalina.manager.JMXProxyServlet.doGet(JMXProxyServlet.java:121) 
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:621) 
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
        at
org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108) 
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
        at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224) 
        at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) 
        at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:581) 
        at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 
        at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 
        at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) 
        at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
        at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
        at
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987) 
        at
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579) 
        at
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307) 
        at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
        at java.lang.Thread.run(Thread.java:619) 
Caused by: java.lang.NoSuchMethodException:
org.apache.catalina.core.StandardThreadExecutor.getPrestartminSpareThreads() 
        at java.lang.Class.getMethod(Class.java:1605) 
        at
org.apache.tomcat.util.modeler.ManagedBean.getGetter(ManagedBean.java:510) 
        ... 27 more 
Mar 6, 2012 9:17:40 AM org.apache.catalina.mbeans.MBeanDumper dumpBeans 
SEVERE: Error getting attribute Catalina:type=Executor,name=tomcatThreadPool
daemon 
javax.management.ReflectionException: Cannot find getter method getDaemon 
        at
org.apache.tomcat.util.modeler.ManagedBean.getGetter(ManagedBean.java:517) 
        at
org.apache.tomcat.util.modeler.BaseModelMBean.getAttribute(BaseModelMBean.java:181) 
        at
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getAttribute(DefaultMBeanServerInterceptor.java:666) 
        at
com.sun.jmx.mbeanserver.JmxMBeanServer.getAttribute(JmxMBeanServer.java:638) 
        at
org.apache.catalina.mbeans.MBeanDumper.dumpBeans(MBeanDumper.java:82) 
        at
org.apache.catalina.manager.JMXProxyServlet.listBeans(JMXProxyServlet.java:172) 
        at
org.apache.catalina.manager.JMXProxyServlet.doGet(JMXProxyServlet.java:121) 
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:621) 
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
        at
org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108) 
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
        at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224) 
        at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) 
        at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:581) 
        at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 
        at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 
        at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) 
        at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
        at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
        at
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987) 
        at
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579) 
        at
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307) 
        at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
        at java.lang.Thread.run(Thread.java:619) 
Caused by: java.lang.NoSuchMethodException:
org.apache.catalina.core.StandardThreadExecutor.getDaemon() 
        at java.lang.Class.getMethod(Class.java:1605) 
        at
org.apache.tomcat.util.modeler.ManagedBean.getGetter(ManagedBean.java:510) 
        ... 27 more 


Mar 6, 2012 9:18:20 AM org.apache.catalina.mbeans.MBeanDumper dumpBeans 
SEVERE: Error getting attribute bean:name=eventingDataSource PooledConnection 
javax.management.MBeanException: RuntimeException thrown in RequiredModelMBean
while trying to invoke operation getPooledConnection 
        at
javax.management.modelmbean.RequiredModelMBean.invokeMethod(RequiredModelMBean.java:1091) 
        at
javax.management.modelmbean.RequiredModelMBean.invoke(RequiredModelMBean.java:955) 
        at
org.springframework.jmx.export.SpringModelMBean.invoke(SpringModelMBean.java:90) 
        at
javax.management.modelmbean.RequiredModelMBean.getAttribute(RequiredModelMBean.java:1358) 
        at
org.springframework.jmx.export.SpringModelMBean.getAttribute(SpringModelMBean.java:109) 
        at
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getAttribute(DefaultMBeanServerInterceptor.java:666) 
        at
com.sun.jmx.mbeanserver.JmxMBeanServer.getAttribute(JmxMBeanServer.java:638) 
        at
org.apache.catalina.mbeans.MBeanDumper.dumpBeans(MBeanDumper.java:82) 
        at
org.apache.catalina.manager.JMXProxyServlet.listBeans(JMXProxyServlet.java:172) 
        at
org.apache.catalina.manager.JMXProxyServlet.doGet(JMXProxyServlet.java:121) 
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:621) 
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
        at
org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108) 
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
        at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224) 
        at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) 
        at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:581) 
        at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 
        at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 
        at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) 
        at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
        at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
        at
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987) 
        at
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579) 
        at
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307) 
        at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
        at java.lang.Thread.run(Thread.java:619) 
Caused by: java.lang.ClassCastException: $Proxy5 cannot be cast to
org.apache.tomcat.jdbc.pool.PooledConnection 
        at
org.apache.tomcat.jdbc.pool.DataSourceProxy.getPooledConnection(DataSourceProxy.java:156) 
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
        at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
        at java.lang.reflect.Method.invoke(Method.java:597) 
        at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:37) 
        at sun.reflect.GeneratedMethodAccessor31.invoke(Unknown Source) 
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
        at java.lang.reflect.Method.invoke(Method.java:597) 
        at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:244) 
        at
javax.management.modelmbean.RequiredModelMBean.invokeMethod(RequiredModelMBean.java:1074) 
        ... 30 more 
Mar 6, 2012 9:18:22 AM org.apache.catalina.mbeans.MBeanDumper dumpBeans 
SEVERE: Error getting attribute bean:name=eventingDataSource XAConnection 
javax.management.MBeanException: Exception thrown in RequiredModelMBean while
trying to invoke operation getXAConnection 
        at
javax.management.modelmbean.RequiredModelMBean.invokeMethod(RequiredModelMBean.java:1101) 
        at
javax.management.modelmbean.RequiredModelMBean.invoke(RequiredModelMBean.java:955) 
        at
org.springframework.jmx.export.SpringModelMBean.invoke(SpringModelMBean.java:90) 
        at
javax.management.modelmbean.RequiredModelMBean.getAttribute(RequiredModelMBean.java:1358) 
        at
org.springframework.jmx.export.SpringModelMBean.getAttribute(SpringModelMBean.java:109) 
        at
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getAttribute(DefaultMBeanServerInterceptor.java:666) 
        at
com.sun.jmx.mbeanserver.JmxMBeanServer.getAttribute(JmxMBeanServer.java:638) 
        at
org.apache.catalina.mbeans.MBeanDumper.dumpBeans(MBeanDumper.java:82) 
        at
org.apache.catalina.manager.JMXProxyServlet.listBeans(JMXProxyServlet.java:172) 
        at
org.apache.catalina.manager.JMXProxyServlet.doGet(JMXProxyServlet.java:121) 
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:621) 
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
        at
org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108) 
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
        at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224) 
        at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) 
        at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:581) 
        at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 
        at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 
        at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) 
        at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
        at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
        at
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987) 
        at
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579) 
        at
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307) 
        at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
        at java.lang.Thread.run(Thread.java:619) 
Caused by: java.sql.SQLException: Connection from pool does not implement
javax.sql.XAConnection 
        at
org.apache.tomcat.jdbc.pool.DataSourceProxy.getXAConnection(DataSourceProxy.java:134) 
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
        at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
        at java.lang.reflect.Method.invoke(Method.java:597) 
        at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:37) 
        at sun.reflect.GeneratedMethodAccessor31.invoke(Unknown Source) 
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
        at java.lang.reflect.Method.invoke(Method.java:597) 
        at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:244) 
        at
javax.management.modelmbean.RequiredModelMBean.invokeMethod(RequiredModelMBean.java:1074) 
        ... 30 more 


The documentation mentioned the JMXProxy interface should remain the same
during this upgrade so we are a little confused with the exceptions.  To add a
little more detail we have enabled all the new Manager roles while we test this
issue. 

  <role rolename="admin-gui"/>
  <role rolename="admin-script"/>

  <role rolename="manager-gui"/>
  <role rolename="manager-script"/>
  <role rolename="manager-jmx"/>
  <role rolename="manager-status"/>

  <user username="xxxx" password="xxxx"
roles="admin-gui,admin-script,manager-gui,manager-script,manager-jmx,manager-status"/>

Any ideas? 

Thanks in advance, 

Jonathan
Comment 1 Jonathan Hodges 2012-03-06 23:58:42 UTC
This also appears on HP hardware with RHEL on both 32-bit and 64-bit Sun JVMs.

We are using the APR Native Tomcat library with a Executor thread pool.

As I mentioned before JMXProxy still returns the data correctly and the server appears to be unimpacted by the exceptions.  

They are really just a nuisance and red herrings for the server guys.
Comment 2 Rainer Jung 2012-03-07 01:13:55 UTC
For most MBeans there's a descriptor defining how the MBean attributes relate to the members of the base objects. For the StandardThreadExecutor there was a bug in this descriptor, so that the MBean dumper tried to retrieve the boolean prestartminSpareThreads using a "get" getter instead of an "is" getter.

The attribute didn't exist in 6.0 so that's why there's no exception for 6.0.

Fixed now in trunk by r1297818 and 7.0 by r1297820.
Will be part of TC 7.0.27.

Thanks for the detailed report.

Regards,

Rainer
Comment 3 Jonathan Hodges 2012-03-07 02:17:27 UTC
Will this fix the other following exception concerning objects exposed with the org.springframework.jmx.export.MBeanExporter?



Mar 6, 2012 9:18:20 AM org.apache.catalina.mbeans.MBeanDumper dumpBeans 
SEVERE: Error getting attribute bean:name=eventingDataSource PooledConnection 
javax.management.MBeanException: RuntimeException thrown in RequiredModelMBean
while trying to invoke operation getPooledConnection 
        at
javax.management.modelmbean.RequiredModelMBean.invokeMethod(RequiredModelMBean.java:1091) 
        at
javax.management.modelmbean.RequiredModelMBean.invoke(RequiredModelMBean.java:955) 
        at
org.springframework.jmx.export.SpringModelMBean.invoke(SpringModelMBean.java:90) 
        at
javax.management.modelmbean.RequiredModelMBean.getAttribute(RequiredModelMBean.java:1358) 
        at
org.springframework.jmx.export.SpringModelMBean.getAttribute(SpringModelMBean.java:109) 
        at
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getAttribute(DefaultMBeanServerInterceptor.java:666) 
        at
com.sun.jmx.mbeanserver.JmxMBeanServer.getAttribute(JmxMBeanServer.java:638) 
        at
org.apache.catalina.mbeans.MBeanDumper.dumpBeans(MBeanDumper.java:82) 
        at
org.apache.catalina.manager.JMXProxyServlet.listBeans(JMXProxyServlet.java:172) 
        at
org.apache.catalina.manager.JMXProxyServlet.doGet(JMXProxyServlet.java:121) 
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:621) 
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
Comment 4 Jonathan Hodges 2012-03-08 02:17:35 UTC
Since the Tomcat JDBC pool is part of Tomcat 7 is there a better way to view the pool properties through JMX than exposing through the Spring MBeanExporter?
Comment 5 Christopher Schultz 2012-03-08 19:17:39 UTC
(In reply to comment #4)
> Since the Tomcat JDBC pool is part of Tomcat 7 is there a better way to view
> the pool properties through JMX than exposing through the Spring MBeanExporter?

While the pool is properly part of Tomcat 7, I believe there's no reason it wasn't be used with Tomcat 6 (but I haven't tried it).

I think you've mentioned using the JMXProxyServlet... is that an acceptable alternative?

If you have further questions, please use the users' list instead of BZ.