https://issues.apache.org/bugzilla/show_bug.cgi?id=54194
Bug ID: 54194 Summary: NPE in DataSource.registerJmx() although DataSource is created with setJmxEnabled(false) Product: Tomcat Modules Version: unspecified Hardware: PC OS: Linux Status: NEW Severity: normal Priority: P2 Component: jdbc-pool Assignee: dev@tomcat.apache.org Reporter: tobias.gie...@voipfuture.com Classification: Unclassified Created attachment 29626 --> https://issues.apache.org/bugzilla/attachment.cgi?id=29626&action=edit Patch against DataSource.java (rev 1412899) from /tomcat/tc7.0.x/trunk The exception does not seem to have any impact (at least not for my application) on the connection pools functionality , it's merely a minor annoyance. The attached patch fixed the problem for me. OS: Ubuntu 12.04 64-bit JDK: java version "1.7.0_09" Java(TM) SE Runtime Environment (build 1.7.0_09-b05) Java HotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode) Version of tomcat-jdbc.jar: 7.0.33 I create the datasource inside a custom ObjectFactory (because I need to retrieve JDBC URL/username/password from a config file on the classpath): Resources are configured inside tomcat/conf/context.xml as follows: ------------------------------------ <Resource name="jdbc/db0" database="db0" auth="Container" type="javax.sql.DataSource" factory="my.DatasourceResourceFactory" /> <Resource name="jdbc/db1" database="db1" auth="Container" type="javax.sql.DataSource" factory="my.DatasourceResourceFactory" /> ------------------------------------ I'm creating the datasource like so: ------------------------------------ private DataSource createDataSource(String jdbcUrl,String username,String password) { final PoolProperties p = new PoolProperties(); p.setUrl( jdbcUrl ); p.setDriverClassName("org.postgresql.Driver"); p.setUsername( username ); p.setPassword( password ); p.setJmxEnabled(false); // JMX disabled p.setTestWhileIdle(false); p.setTestOnBorrow(true); p.setValidationQuery("SELECT 1"); p.setTestOnReturn(false); p.setValidationInterval(30000); p.setInitialSize(5); p.setMaxActive(25); p.setMinIdle(0); p.setMaxIdle(8); p.setTimeBetweenEvictionRunsMillis(30000); p.setMinEvictableIdleTimeMillis(30000); p.setRemoveAbandonedTimeout(60); p.setLogAbandoned(false); p.setRemoveAbandoned(false); p.setJdbcInterceptors("org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer"); final DataSource datasource = new DataSource(); datasource.setPoolProperties(p); return datasource; } ------------------------------------ This is the exception showing up in the log file: ------------------------------------ 2012-11-23 14:53:48,109 [pool-2-thread-1] ERROR org.apache.tomcat.jdbc.pool.DataSource - Unable to register JDBC pool with JMX java.lang.NullPointerException at org.apache.tomcat.jdbc.pool.DataSource.registerJmx(DataSource.java:135) at org.apache.tomcat.jdbc.pool.DataSource.preRegister(DataSource.java:102) at org.apache.tomcat.util.modeler.BaseModelMBean.preRegister(BaseModelMBean.java:1132) at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.preRegister(DefaultMBeanServerInterceptor.java:1007) at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerDynamicMBean(DefaultMBeanServerInterceptor.java:919) at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerObject(DefaultMBeanServerInterceptor.java:900) at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerMBean(DefaultMBeanServerInterceptor.java:324) at com.sun.jmx.mbeanserver.JmxMBeanServer.registerMBean(JmxMBeanServer.java:512) at org.apache.tomcat.util.modeler.Registry.registerComponent(Registry.java:742) at org.apache.catalina.core.NamingContextListener.addResource(NamingContextListener.java:1062) at org.apache.catalina.core.NamingContextListener.createNamingContext(NamingContextListener.java:671) at org.apache.catalina.core.NamingContextListener.lifecycleEvent(NamingContextListener.java:270) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5161) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:895) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:871) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:615) at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:958) at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1599) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) at java.util.concurrent.FutureTask.run(FutureTask.java:166) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) at java.lang.Thread.run(Thread.java:722) -- You are receiving this mail because: You are the assignee for the bug. --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org