tomcat-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bugzi...@apache.org
Subject [Bug 54194] New: NPE in DataSource.registerJmx() although DataSource is created with setJmxEnabled(false)
Date Fri, 23 Nov 2012 14:35:58 GMT
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.gierke@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-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


Mime
View raw message