[jboss-jira] [JBoss JIRA] (AS7-4554) AS 7 + Wicket: ClassNotFoundException: org.jboss.msc.service.ServiceName on deserialization
Ondrej Zizka (JIRA)
jira-events at lists.jboss.org
Fri Sep 14 12:51:32 EDT 2012
[ https://issues.jboss.org/browse/AS7-4554?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12718742#comment-12718742 ]
Ondrej Zizka commented on AS7-4554:
-----------------------------------
bstransberry:
{quote}
Line 12 above is likely calling this class:
http://grepcode.com/file/repo1.maven.org/maven2/org.apache.wicket/wicket-core/1.5-RC7/org/apache/wicket/application/DefaultClassResolver.java?av=h#DefaultClassResolver
That class returns the TCCL from the getClassLoader().
So looks like the TCCL does not have visibility to the MSC module, so CNFE for the ServiceName class. I wouldn't expect a webapp TCCL to have visibility, although you'd need to ask the EE guys on the dev list or IRC to confirm it's not supposed to.
{quote}
ozizka:
{quote}
What's the solution? Make Wicket an AS module and give it visibility?
Or specific AbstractClassResolver impl for AS 7?
{quote}
bstransberry:
{quote}
This describes how to add module dependencies to a webapp: https://docs.jboss.org/author/display/AS71/Class+Loading+in+AS7
I don't know enough about Wicket to know why it would be needing to deserialize the ServiceName class. Doesn't sound like a good behavior.
{quote}
> AS 7 + Wicket: ClassNotFoundException: org.jboss.msc.service.ServiceName on deserialization
> -------------------------------------------------------------------------------------------
>
> Key: AS7-4554
> URL: https://issues.jboss.org/browse/AS7-4554
> Project: Application Server 7
> Issue Type: Bug
> Reporter: Ondrej Zizka
> Assignee: Ondrej Zizka
> Priority: Minor
>
> This belongs under quickstarts.
> The issue is rather on Wicket's side, so it's rather a tracking jira.
> 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)
> STR:
> * 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.
> See Gist for few more info: https://gist.github.com/2409907
> {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
More information about the jboss-jira
mailing list