You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "Martin Grigorov (JIRA)" <ji...@apache.org> on 2012/10/03 14:06:08 UTC

[jira] [Resolved] (WICKET-4785) Wicket + JBoss AS7: ClassNotFoundException: org.jboss.msc.service.ServiceName on deserialization

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

Martin Grigorov resolved WICKET-4785.
-------------------------------------

    Resolution: Not A Problem

I just checked the ticket in JBOSS and I don't think the problem is in Wicket.

Wicket needs this class during serialization because the page has been serialized with it.
Why the page has a ref to it - no idea. Somewhere, somehow there is a reference to an object of this class.
                
> Wicket + JBoss AS7: ClassNotFoundException: org.jboss.msc.service.ServiceName on deserialization
> ------------------------------------------------------------------------------------------------
>
>                 Key: WICKET-4785
>                 URL: https://issues.apache.org/jira/browse/WICKET-4785
>             Project: Wicket
>          Issue Type: Bug
>          Components: wicket
>    Affects Versions: 1.5.8
>         Environment: JBoss AS 7.1.x
>            Reporter: Ondra Žižka
>
> Wicket's serialization causes problems when deployed on JBoss AS 7.
> AS 7 has the new higly modular architecture, which only makes relevant classes available to war's classloader.  org.jboss.msc.* is not amongst them.
> I guess Wicket serializes this class because it traverses to it through CDI proxy's fields.
> Then upon deserialization, it fails.
> This is making Wicket unsuitable for production in AS 7, which is quite pity, since AS 7 is good impl of Java EE 6 with all the goodies like CDI; and also think about OpenShift.com which hosts on AS 7.
> I have briefly discussed this with AS devs and they said this needs relatively simple fix in the serialization code. Or, maybe, a special serializer could be written for integration with AS 7.
> ClassNotFoundException: org.jboss.msc.service.ServiceName from [Module "deployment.ROOT.war:main" from Service Module Loader]
>     at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190)
> Steps to reproduce: 
> * See http://test-ondra.rhcloud.com/
> * Add some record, then go to / , refresh few times.
> * Wicket will redirect you e.g. to /?4
> * When you change that to a lower number, Wicket tries to get the old page state by deserializing.
> * That's why it happens during deserialization.
> {code}
> Root cause:
> java.lang.ClassNotFoundException: org.jboss.msc.service.ServiceName from [Module "deployment.ROOT.war:main" from Service Module Loader]
> at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190)
> at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468)
> at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456)
> at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:423)
> at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)
> at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120)
> at java.lang.Class.forName0(Native Method)
> at java.lang.Class.forName(Class.java:264)
> at org.apache.wicket.application.AbstractClassResolver.resolveClass(AbstractClassResolver.java:108)
> at org.apache.wicket.serialize.java.JavaSerializer$ClassResolverObjectInputStream.resolveClass(JavaSerializer.java:216)
> at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1592)
> at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1513)
> at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1749)
> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1346)
> at java.io.ObjectInputStream.readObject(ObjectInputStream.java:368)
> at java.util.HashMap.readObject(HashMap.java:1047)
> at java.lang.reflect.Method.invoke(Method.java:616)
> at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:988)
> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1865)
> at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1770)
> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1346)
> at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1963)
> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1887)
> at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1770)
> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1346)
> at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1963)
> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1887)
> at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1770)
> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1346)
> at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1963)
> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1887)
> at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1770)
> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1346)
> at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1963)
> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1887)
> at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1770)
> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1346)
> at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1963)
> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1887)
> at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1770)
> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1346)
> at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1963)
> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1887)
> at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1770)
> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1346)
> at java.io.ObjectInputStream.readObject(ObjectInputStream.java:368)
> at org.apache.wicket.serialize.java.JavaSerializer.deserialize(JavaSerializer.java:120)
> at org.apache.wicket.pageStore.DefaultPageStore.deserializePage(DefaultPageStore.java:388)
> at org.apache.wicket.pageStore.DefaultPageStore.getPage(DefaultPageStore.java:127)
> at org.apache.wicket.page.PageStoreManager$SessionEntry.getPage(PageStoreManager.java:192)
> at org.apache.wicket.page.PageStoreManager$PersistentRequestAdapter.getPage(PageStoreManager.java:327)
> at org.apache.wicket.page.AbstractPageManager.getPage(AbstractPageManager.java:102)
> at org.apache.wicket.page.PageManagerDecorator.getPage(PageManagerDecorator.java:50)
> at org.apache.wicket.page.PageAccessSynchronizer$2.getPage(PageAccessSynchronizer.java:257)
> at org.apache.wicket.DefaultMapperContext.getPageInstance(DefaultMapperContext.java:117)
> at org.apache.wicket.request.handler.PageProvider.getStoredPage(PageProvider.java:292)
> at org.apache.wicket.request.handler.PageProvider.isNewPageInstance(PageProvider.java:205)
> at org.apache.wicket.request.mapper.AbstractBookmarkableMapper.mapHandler(AbstractBookmarkableMapper.java:349)
> at org.apache.wicket.request.mapper.MountedMapper.mapHandler(MountedMapper.java:366)
> at org.apache.wicket.request.mapper.CompoundRequestMapper.mapHandler(CompoundRequestMapper.java:157)
> at org.apache.wicket.request.cycle.RequestCycle.mapUrlFor(RequestCycle.java:404)
> at org.apache.wicket.request.handler.render.WebPageRenderer.respond(WebPageRenderer.java:146)
> at org.apache.wicket.request.handler.RenderPageRequestHandler.respond(RenderPageRequestHandler.java:167)
> at org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:781)
> at org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64)
> at org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:255)
> at org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:212)
> at org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:283)
> at org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:185)
> at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:241)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248)
> at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275)
> at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)
> at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50)
> at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:154)
> at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155)
> at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
> at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
> at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368)
> at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877)
> at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671)
> at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930)
> at java.lang.Thread.run(Thread.java:679)
> Complete stack:
> java.lang.RuntimeException: Could not deserialize object using: class org.apache.wicket.serialize.java.JavaSerializer$ClassResolverObjectInputStream
> at org.apache.wicket.serialize.java.JavaSerializer.deserialize(JavaSerializer.java:137)
> at org.apache.wicket.pageStore.DefaultPageStore.deserializePage(DefaultPageStore.java:388)
> at org.apache.wicket.pageStore.DefaultPageStore.getPage(DefaultPageStore.java:127)
> at org.apache.wicket.page.PageStoreManager$SessionEntry.getPage(PageStoreManager.java:192)
> at org.apache.wicket.page.PageStoreManager$PersistentRequestAdapter.getPage(PageStoreManager.java:327)
> at org.apache.wicket.page.AbstractPageManager.getPage(AbstractPageManager.java:102)
> at org.apache.wicket.page.PageManagerDecorator.getPage(PageManagerDecorator.java:50)
> at org.apache.wicket.page.PageAccessSynchronizer$2.getPage(PageAccessSynchronizer.java:257)
> at org.apache.wicket.DefaultMapperContext.getPageInstance(DefaultMapperContext.java:117)
> at org.apache.wicket.request.handler.PageProvider.getStoredPage(PageProvider.java:292)
> at org.apache.wicket.request.handler.PageProvider.isNewPageInstance(PageProvider.java:205)
> at org.apache.wicket.request.mapper.AbstractBookmarkableMapper.mapHandler(AbstractBookmarkableMapper.java:349)
> at org.apache.wicket.request.mapper.MountedMapper.mapHandler(MountedMapper.java:366)
> at org.apache.wicket.request.mapper.CompoundRequestMapper.mapHandler(CompoundRequestMapper.java:157)
> at org.apache.wicket.request.cycle.RequestCycle.mapUrlFor(RequestCycle.java:404)
> at org.apache.wicket.request.handler.render.WebPageRenderer.respond(WebPageRenderer.java:146)
> at org.apache.wicket.request.handler.RenderPageRequestHandler.respond(RenderPageRequestHandler.java:167)
> at org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:781)
> at org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64)
> at org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:255)
> at org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:212)
> at org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:283)
> at org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:185)
> {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira