[ 
https://issues.apache.org/jira/browse/WICKET-6353?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15957410#comment-15957410
 ] 

Emond Papegaaij commented on WICKET-6353:
-----------------------------------------

{code}
ClassNotFoundException: 
org.springframework.core.SerializableTypeWrapper$SerializableTypeProxy
In class: ModuleClassLoader
module: Module "deployment.dev-bundle-2.49.04-SNAPSHOT.ear:main" from Service 
Module Loader

ModuleClassLoader.findClass(String, boolean, boolean) line: 198 
ModuleClassLoader(ConcurrentClassLoader).performLoadClassUnchecked(String, 
boolean, boolean) line: 363  
ModuleClassLoader(ConcurrentClassLoader).performLoadClass(String, boolean, 
boolean) line: 351   
ModuleClassLoader(ConcurrentClassLoader).loadClass(String) line: 93     
Class<T>.forName0(String, boolean, ClassLoader, Class<?>) line: not available 
[native method]   
Class<T>.forName(String, boolean, ClassLoader) line: 348                        
                <-- lookup SerializableTypeWrapper$SerializableTypeProxy
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).resolveProxyClass(String[])
 line: 700  
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readProxyDesc(boolean)
 line: 1566      
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readClassDesc(boolean)
 line: 1518      
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readOrdinaryObject(boolean)
 line: 1781         <-- $Proxy326   
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readObject0(boolean)
 line: 1353        
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).defaultReadFields(Object,
 ObjectStreamClass) line: 2018        
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readSerialData(Object,
 ObjectStreamClass) line: 1942   
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readOrdinaryObject(boolean)
 line: 1808         <-- ResolvableType
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readObject0(boolean)
 line: 1353        
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readArray(boolean)
 line: 1714                  <-- [ResolvableType]
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readObject0(boolean)
 line: 1347        
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).defaultReadFields(Object,
 ObjectStreamClass) line: 2018        
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readSerialData(Object,
 ObjectStreamClass) line: 1942   
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readOrdinaryObject(boolean)
 line: 1808         <-- ResolvableType
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readObject0(boolean)
 line: 1353        
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).defaultReadFields(Object,
 ObjectStreamClass) line: 2018        
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readSerialData(Object,
 ObjectStreamClass) line: 1942   
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readOrdinaryObject(boolean)
 line: 1808         <-- SpringBeanLocator
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readObject0(boolean)
 line: 1353        
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).defaultReadFields(Object,
 ObjectStreamClass) line: 2018        
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readSerialData(Object,
 ObjectStreamClass) line: 1942   
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readOrdinaryObject(boolean)
 line: 1808         <-- ProxyReplacement, resolves to 
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readObject0(boolean)
 line: 1353                        LazyInitProxyFactory$JDKHandler
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).defaultReadFields(Object,
 ObjectStreamClass) line: 2018        
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readSerialData(Object,
 ObjectStreamClass) line: 1942   
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readOrdinaryObject(boolean)
 line: 1808
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readObject0(boolean)
 line: 1353
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readArray(boolean)
 line: 1714
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readObject0(boolean)
 line: 1347
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).defaultReadFields(Object,
 ObjectStreamClass) line: 2018        
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readSerialData(Object,
 ObjectStreamClass) line: 1942   
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readOrdinaryObject(boolean)
 line: 1808 
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readObject0(boolean)
 line: 1353        
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readObject() 
line: 373 
ArrayList<E>.readObject(ObjectInputStream) line: 791    
GeneratedMethodAccessor312.invoke(Object, Object[]) line: not available 
DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 43  
Method.invoke(Object, Object...) line: 498      
ObjectStreamClass.invokeReadObject(Object, ObjectInputStream) line: 1058        
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readSerialData(Object,
 ObjectStreamClass) line: 1909   
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readOrdinaryObject(boolean)
 line: 1808 
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readObject0(boolean)
 line: 1353        
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).defaultReadFields(Object,
 ObjectStreamClass) line: 2018        
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readSerialData(Object,
 ObjectStreamClass) line: 1942   
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readOrdinaryObject(boolean)
 line: 1808 
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readObject0(boolean)
 line: 1353        
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readObject() 
line: 373 
ArrayList<E>.readObject(ObjectInputStream) line: 791    
GeneratedMethodAccessor312.invoke(Object, Object[]) line: not available 
DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 43  
Method.invoke(Object, Object...) line: 498      
ObjectStreamClass.invokeReadObject(Object, ObjectInputStream) line: 1058        
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readSerialData(Object,
 ObjectStreamClass) line: 1909   
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readOrdinaryObject(boolean)
 line: 1808 
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readObject0(boolean)
 line: 1353        
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).defaultReadFields(Object,
 ObjectStreamClass) line: 2018        
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readSerialData(Object,
 ObjectStreamClass) line: 1942   
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readOrdinaryObject(boolean)
 line: 1808 
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readObject0(boolean)
 line: 1353        
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).defaultReadFields(Object,
 ObjectStreamClass) line: 2018        
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readSerialData(Object,
 ObjectStreamClass) line: 1942   
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readOrdinaryObject(boolean)
 line: 1808 
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readObject0(boolean)
 line: 1353        
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).defaultReadFields(Object,
 ObjectStreamClass) line: 2018        
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readSerialData(Object,
 ObjectStreamClass) line: 1942   
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readOrdinaryObject(boolean)
 line: 1808 
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readObject0(boolean)
 line: 1353        
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).defaultReadFields(Object,
 ObjectStreamClass) line: 2018        
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readSerialData(Object,
 ObjectStreamClass) line: 1942   
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readOrdinaryObject(boolean)
 line: 1808 
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readObject0(boolean)
 line: 1353        
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readObject() 
line: 373 
LinkedMap<K,V>(AbstractHashedMap<K,V>).doReadObject(ObjectInputStream) line: 
1268       
LinkedMap<K,V>.readObject(ObjectInputStream) line: 132  
NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available 
[native method]  
NativeMethodAccessorImpl.invoke(Object, Object[]) line: 62      
DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 43  
Method.invoke(Object, Object...) line: 498      
ObjectStreamClass.invokeReadObject(Object, ObjectInputStream) line: 1058        
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readSerialData(Object,
 ObjectStreamClass) line: 1909   
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readOrdinaryObject(boolean)
 line: 1808 
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readObject0(boolean)
 line: 1353        
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).defaultReadFields(Object,
 ObjectStreamClass) line: 2018        
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readSerialData(Object,
 ObjectStreamClass) line: 1942   
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readOrdinaryObject(boolean)
 line: 1808 
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readObject0(boolean)
 line: 1353        
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).defaultReadFields(Object,
 ObjectStreamClass) line: 2018        
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readSerialData(Object,
 ObjectStreamClass) line: 1942   
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readOrdinaryObject(boolean)
 line: 1808 
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readObject0(boolean)
 line: 1353        
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).defaultReadFields(Object,
 ObjectStreamClass) line: 2018        
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readSerialData(Object,
 ObjectStreamClass) line: 1942   
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readOrdinaryObject(boolean)
 line: 1808 
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readObject0(boolean)
 line: 1353        
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readArray(boolean)
 line: 1714  
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readObject0(boolean)
 line: 1347        
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readArray(boolean)
 line: 1714  
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readObject0(boolean)
 line: 1347        
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).defaultReadFields(Object,
 ObjectStreamClass) line: 2018        
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readSerialData(Object,
 ObjectStreamClass) line: 1942   
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readOrdinaryObject(boolean)
 line: 1808 
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readObject0(boolean)
 line: 1353        
JavaSerializer$ClassResolverObjectInputStream(ObjectInputStream).readObject() 
line: 373 
DeflatedJavaSerializer(JavaSerializer).deserialize(byte[]) line: 122    
PerSessionPageStore(AbstractPageStore).deserializePage(byte[]) line: 152        
PerSessionPageStore(AbstractCachingPageStore<P>).getPage(String, int) line: 67  
PageStoreManager$SessionEntry.getPage(int) line: 211    
DecoratablePageManager$DecoratableRequestAdapter(PageStoreManager$PersistentRequestAdapter).getPage(int)
 line: 367      
DecoratablePageManager(AbstractPageManager).getPage(int) line: 82       
PageAccessSynchronizer$2(PageManagerDecorator).getPage(int) line: 50    
PageAccessSynchronizer$2.getPage(int) line: 246 
History.getPage(PageInformation) line: 33       
TargetBasedSecurePageLink$1.getPage() line: 39  
TargetBasedSecurePageLink<T>(SecurePageLink<T>).onClick() line: 106     
TargetBasedSecurePageLink<T>(Link<T>).onLinkClicked() line: 190 
NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available 
[native method]  
NativeMethodAccessorImpl.invoke(Object, Object[]) line: 62      
DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 43  
Method.invoke(Object, Object...) line: 498      
RequestListenerInterface.internalInvoke(Component, Object) line: 258    
RequestListenerInterface.invoke(IRequestableComponent) line: 216        
ListenerInterfaceRequestHandler.invokeListener() line: 241      
ListenerInterfaceRequestHandler.respond(IRequestCycle) line: 234        
RequestCycle$HandlerExecutor.respond(IRequestHandler) line: 895 
RequestCycle$HandlerExecutor(RequestHandlerStack).execute(IRequestHandler) 
line: 64     
RequestCycle.execute(IRequestHandler) line: 265 
RequestCycle.processRequest() line: 222 
RequestCycle.processRequestAndDetach() line: 293        
WicketFilter.processRequestCycle(RequestCycle, WebResponse, HttpServletRequest, 
HttpServletResponse, FilterChain) line: 261     
WicketFilter.processRequest(ServletRequest, ServletResponse, FilterChain) line: 
203     
WicketFilter.doFilter(ServletRequest, ServletResponse, FilterChain) line: 284   
ManagedFilter.doFilter(ServletRequest, ServletResponse, FilterChain) line: 61   
FilterHandler$FilterChainImpl.doFilter(ServletRequest, ServletResponse) line: 
131       
CloseJpaTransactionAfterViewFilter.doFilterInternal(HttpServletRequest, 
HttpServletResponse, FilterChain) line: 85      
CloseJpaTransactionAfterViewFilter(OncePerRequestFilter).doFilter(ServletRequest,
 ServletResponse, FilterChain) line: 107       
ManagedFilter.doFilter(ServletRequest, ServletResponse, FilterChain) line: 61   
FilterHandler$FilterChainImpl.doFilter(ServletRequest, ServletResponse) line: 
131       
ActiveRequestsPerSessionFilter.doHttpRequestFilter(HttpServletRequest, 
HttpServletResponse, FilterChain) line: 176      
ActiveRequestsPerSessionFilter.doFilter(ServletRequest, ServletResponse, 
FilterChain) line: 149 
ManagedFilter.doFilter(ServletRequest, ServletResponse, FilterChain) line: 61   
FilterHandler$FilterChainImpl.doFilter(ServletRequest, ServletResponse) line: 
131       
FilterHandler.handleRequest(HttpServerExchange) line: 84        
ServletSecurityRoleHandler.handleRequest(HttpServerExchange) line: 62   
ServletDispatchingHandler.handleRequest(HttpServerExchange) line: 36    
SecurityContextAssociationHandler.handleRequest(HttpServerExchange) line: 78    
PredicateHandler.handleRequest(HttpServerExchange) line: 43     
SSLInformationAssociationHandler.handleRequest(HttpServerExchange) line: 131    
ServletAuthenticationCallHandler.handleRequest(HttpServerExchange) line: 57     
PredicateHandler.handleRequest(HttpServerExchange) line: 43     
ServletConfidentialityConstraintHandler(AbstractConfidentialityHandler).handleRequest(HttpServerExchange)
 line: 46      
ServletConfidentialityConstraintHandler.handleRequest(HttpServerExchange) line: 
64      
AuthenticationMechanismsHandler.handleRequest(HttpServerExchange) line: 60      
CachedAuthenticatedSessionHandler.handleRequest(HttpServerExchange) line: 77    
NotificationReceiverHandler.handleRequest(HttpServerExchange) line: 50  
SecurityInitialHandler(AbstractSecurityContextAssociationHandler).handleRequest(HttpServerExchange)
 line: 43    
PredicateHandler.handleRequest(HttpServerExchange) line: 43     
JACCContextIdHandler.handleRequest(HttpServerExchange) line: 61 
PredicateHandler.handleRequest(HttpServerExchange) line: 43     
PredicateHandler.handleRequest(HttpServerExchange) line: 43     
ServletInitialHandler.handleFirstRequest(HttpServerExchange, 
ServletRequestContext) line: 292   
ServletInitialHandler.access$100(ServletInitialHandler, HttpServerExchange, 
ServletRequestContext) line: 81     
ServletInitialHandler$2.call(HttpServerExchange, ServletRequestContext) line: 
138       
ServletInitialHandler$2.call(HttpServerExchange, Object) line: 135      
ServletRequestContextThreadSetupAction$1.call(HttpServerExchange, C) line: 48   
ContextClassLoaderSetupAction$1.call(HttpServerExchange, C) line: 43    
LegacyThreadSetupActionWrapper$1.call(HttpServerExchange, C) line: 44   
LegacyThreadSetupActionWrapper$1.call(HttpServerExchange, C) line: 44   
LegacyThreadSetupActionWrapper$1.call(HttpServerExchange, C) line: 44   
LegacyThreadSetupActionWrapper$1.call(HttpServerExchange, C) line: 44   
LegacyThreadSetupActionWrapper$1.call(HttpServerExchange, C) line: 44   
LegacyThreadSetupActionWrapper$1.call(HttpServerExchange, C) line: 44   
ServletInitialHandler.dispatchRequest(HttpServerExchange, 
ServletRequestContext, ServletChain, DispatcherType) line: 272        
ServletInitialHandler.access$000(ServletInitialHandler, HttpServerExchange, 
ServletRequestContext, ServletChain, DispatcherType) line: 81       
ServletInitialHandler$1.handleRequest(HttpServerExchange) line: 104     
Connectors.executeRootHandler(HttpHandler, HttpServerExchange) line: 202        
HttpServerExchange$1.run() line: 805    
XnioWorker$TaskPool(ThreadPoolExecutor).runWorker(ThreadPoolExecutor$Worker) 
line: 1142 
ThreadPoolExecutor$Worker.run() line: 617       
Thread.run() line: 745  
{code}

> 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)

Reply via email to