commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Narayanan Harihara (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (POOL-292) ClassNotFoundException: org.apache.commons.pool2.impl.DefaultEvictionPolicy
Date Thu, 23 Apr 2015 16:57:38 GMT

     [ https://issues.apache.org/jira/browse/POOL-292?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Narayanan Harihara updated POOL-292:
------------------------------------
    Description: 
Here is my application structure:
myapplication-bundle(uses mybatis) -->  datasource-bundle (uses commons-dbcp2) --> commons-pool2
bundle.

With this structure, all the datasource API information are hidden from my application and
only javax.sql.DataSource is exported from the datasource-bundle. So I do not have OSGi import
package for org.apache.commons.pool2.impl in my application. 

But on version 2.3 of commons-pool2, the method org.apache.commons.pool2.impl.BaseGenericObjectPool.setEvictionPolicyClassName
is using Thread.currentThread().getContextClassLoader() to load EvicationPolicy class, which
means it is using the class loader of myapplication to load org.apache.commons.pool2.impl.DefaultEvictionPolicy
class. Since I do not have that in myapplication-bundle's OSGi Import-Package, I get a ClassNotFound
exception. 

This issue did not happen in commons-pool2 version 2.2 because, it did not use the current
thread's class loader to instantiate the eviction policy. Due to this, I am kinda forced to
use 2.2 version in my environment and i would like to stay on the latest version due to all
the bug fixes with concurrency. 

Any help would be really appreciated. 


  was:
Here is my application structure:
myapplication-bundle(uses mybatis) -->  datasource-bundle (uses commons-dbcp2) --> commons-pool2
bundle.

With this structure, all the datasource API information are hidden from my application and
only javax.sql.DataSource is exported from the datasource-bundle. So I do not have OSGi import
package for org.apache.commons.pool2.impl in my application. 

But the method org.apache.commons.pool2.impl.BaseGenericObjectPool.setEvictionPolicyClassName
is using Thread.currentThread().getContextClassLoader() to load EvicationPolicy class, which
means it is using the class loader of myapplication to load org.apache.commons.pool2.impl.DefaultEvictionPolicy
class. Since I do not have that in my OSGi Import-Package, I get a ClassNotFound exception.


This issue did not happen in commons-pool2 version 2.2 because, it did not use the current
thread's class loader to instantiate the eviction policy. Due to this, I am kinda forced to
use 2.2 version in my environment and i would like to stay on the latest version due to all
the bug fixes with concurrency. 

Any help would be really appreciated. 



> ClassNotFoundException: org.apache.commons.pool2.impl.DefaultEvictionPolicy
> ---------------------------------------------------------------------------
>
>                 Key: POOL-292
>                 URL: https://issues.apache.org/jira/browse/POOL-292
>             Project: Commons Pool
>          Issue Type: Bug
>    Affects Versions: 2.3
>         Environment: Apache Karaf OSGi
>            Reporter: Narayanan Harihara
>              Labels: OSGi,, classnotfoundexception
>
> Here is my application structure:
> myapplication-bundle(uses mybatis) -->  datasource-bundle (uses commons-dbcp2) -->
commons-pool2 bundle.
> With this structure, all the datasource API information are hidden from my application
and only javax.sql.DataSource is exported from the datasource-bundle. So I do not have OSGi
import package for org.apache.commons.pool2.impl in my application. 
> But on version 2.3 of commons-pool2, the method org.apache.commons.pool2.impl.BaseGenericObjectPool.setEvictionPolicyClassName
is using Thread.currentThread().getContextClassLoader() to load EvicationPolicy class, which
means it is using the class loader of myapplication to load org.apache.commons.pool2.impl.DefaultEvictionPolicy
class. Since I do not have that in myapplication-bundle's OSGi Import-Package, I get a ClassNotFound
exception. 
> This issue did not happen in commons-pool2 version 2.2 because, it did not use the current
thread's class loader to instantiate the eviction policy. Due to this, I am kinda forced to
use 2.2 version in my environment and i would like to stay on the latest version due to all
the bug fixes with concurrency. 
> Any help would be really appreciated. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message