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

Amichai Rothman resolved ARIES-2111.
------------------------------------
    Fix Version/s: rsa-2.0.0
       Resolution: Fixed

> ClassNotFoundException when loading transitive class
> ----------------------------------------------------
>
>                 Key: ARIES-2111
>                 URL: https://issues.apache.org/jira/browse/ARIES-2111
>             Project: Aries
>          Issue Type: Bug
>          Components: Remote Service Admin
>    Affects Versions: rsa-1.16.1
>         Environment: Aries RSA 1.16.1, bug discovered while running in Karaf 
> 4.4.3, OpenJDK 11 on Linux.
>            Reporter: Amichai Rothman
>            Priority: Major
>             Fix For: rsa-2.0.0
>
>
> The TCP provider uses BasicObjectInputStream to deserialize objects such as 
> method parameters passed to the remote service. This class overrides the 
> resolveClass method to use the service bundle's classloader to load classes. 
> However, it fails to account for transitive references: if a service method 
> parameter is an object of class A in package 'a' (imported by the service), 
> but contains a field of class B from package 'b' (imported by class A but not 
> directly by the service), then a ClassNotFoundException is thrown stating 
> that the service's classloader can't find class B (which it indeed does not 
> import).
> I think the resolveClass method should not use only the service's top-level 
> classloader to load all classes, but should also save the bundle classloaders 
> of the loaded classes it encounters and try using them to load transitive 
> class references. Perhaps something likeĀ  suggested in 
> [https://stackoverflow.com/a/13876075] (with added validation and error 
> handling).



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to