[
https://issues.apache.org/jira/browse/WICKET-6353?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15957562#comment-15957562
]
Sven Meier commented on WICKET-6353:
------------------------------------
Thanks!
I was looking for a solution to interject the stack with method of our own
class, loaded via our own classloader. This way we could take control the
'latestUserDefinedLoader'. But it seems this is not possible, since all
relevant methods of ObjectInputStream are final or private :(.
> Proxy deserialization fails due to classloading issues
> ------------------------------------------------------
>
> Key: WICKET-6353
> URL: https://issues.apache.org/jira/browse/WICKET-6353
> Project: Wicket
> Issue Type: Bug
> Components: wicket
> Affects Versions: 7.6.0
> Reporter: Emond Papegaaij
>
> JavaSerializer.ClassResolverObjectInputStream overrides resolveClass to
> resolve classes via the Wicket ClassResolvers. This does however not happen
> for resolveProxyClass.
> An example of how this can go wrong:
> * A page with a large component tree is deserialized (war).
> * LinkedMap (used in MarkupContainer) is loaded in a parent ClassLoader (ear).
> * Via this stack, a proxy is hit implementing Spring classes (from the war)
> * Due to LinkedMap determining the latestUserDefinedLoader, the ear-loader is
> used for the lookup of this interface, which fails
> Unfortunately, writing a testcase for this is not easy, so I only have a
> proposed fix: see the classloadingfix branch
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)