Hi, Wicket wraps the beans in serializable proxy, so there is no need to make your services (beans) Serializable. When the bean is type is an interface then Wicket uses JDK Proxy. When it is a class then CGLib is used to create the proxy.
Google for "groovy cglib" problems and you may find the solution. On Wed, Oct 24, 2012 at 1:10 AM, Wujek Srujek <wujek.sru...@gmail.com> wrote: > Hi. I have a webapplication using wicket 6.1.0 (will upgrade when I have > some more time) and I use google guice as dependency injector. The > dependencies are sometimes Java and sometimes Groovy (compiled with 2.0.5) > classes. Injecting Java dependencies with @Inject in pages work fine, the > problem is with Groovy instances. Here is the exception I'm seeing: > > java.lang.IllegalArgumentException: Protected method: > $getStaticMetaClass()Lgroovy/lang/MetaClass; > at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:209) > at > org.apache.wicket.proxy.LazyInitProxyFactory$CGLibInterceptor.intercept(LazyInitProxyFactory.java:333) > at > WICKET_de.mino.importer.gdsl.GDSLImporter$$EnhancerByCGLIB$$1df0e014.$getStaticMetaClass(<generated>) > at de.mino.importer.gdsl.GDSLImporter.<init>(GDSLImporter.groovy) > at > WICKET_de.mino.importer.gdsl.GDSLImporter$$EnhancerByCGLIB$$1df0e014.<init>(<generated>) > at java.lang.reflect.Constructor.newInstance(Constructor.java:525) > at net.sf.cglib.core.ReflectUtils.newInstance(ReflectUtils.java:228) > at net.sf.cglib.core.ReflectUtils.newInstance(ReflectUtils.java:220) > at net.sf.cglib.core.ReflectUtils.newInstance(ReflectUtils.java:216) > at net.sf.cglib.proxy.Enhancer.createUsingReflection(Enhancer.java:643) > at net.sf.cglib.proxy.Enhancer.firstInstance(Enhancer.java:538) > at > net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:225) > at net.sf.cglib.proxy.Enhancer.createHelper(Enhancer.java:377) > at net.sf.cglib.proxy.Enhancer.create(Enhancer.java:285) > at > org.apache.wicket.proxy.LazyInitProxyFactory.createProxy(LazyInitProxyFactory.java:190) > at > org.apache.wicket.guice.GuiceFieldValueFactory.getFieldValue(GuiceFieldValueFactory.java:69) > at org.apache.wicket.injection.Injector.inject(Injector.java:111) > at > org.apache.wicket.guice.GuiceComponentInjector.inject(GuiceComponentInjector.java:122) > at > org.apache.wicket.guice.GuiceComponentInjector.onInstantiation(GuiceComponentInjector.java:128) > at > org.apache.wicket.application.ComponentInstantiationListenerCollection$1.notify(ComponentInstantiationListenerCollection.java:38) > at > org.apache.wicket.application.ComponentInstantiationListenerCollection$1.notify(ComponentInstantiationListenerCollection.java:34) > at > org.apache.wicket.util.listener.ListenerCollection.notify(ListenerCollection.java:80) > at > org.apache.wicket.application.ComponentInstantiationListenerCollection.onInstantiation(ComponentInstantiationListenerCollection.java:33) > at org.apache.wicket.Component.<init>(Component.java:683) > at org.apache.wicket.MarkupContainer.<init>(MarkupContainer.java:120) > at org.apache.wicket.Page.<init>(Page.java:172) > at org.apache.wicket.Page.<init>(Page.java:136) > at org.apache.wicket.markup.html.WebPage.<init>(WebPage.java:76) > at de.mino.web.wicket.DummyPage.<init>(DummyPage.java:47) > at java.lang.reflect.Constructor.newInstance(Constructor.java:525) > at > org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:174) > at > org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:66) > at > org.apache.wicket.DefaultMapperContext.newPageInstance(DefaultMapperContext.java:133) > at > org.apache.wicket.core.request.handler.PageProvider.resolvePageInstance(PageProvider.java:278) > at > org.apache.wicket.core.request.handler.PageProvider.getPageInstance(PageProvider.java:166) > at > org.apache.wicket.request.handler.render.PageRenderer.getPage(PageRenderer.java:78) > at > org.apache.wicket.request.handler.render.WebPageRenderer.renderPage(WebPageRenderer.java:94) > at > org.apache.wicket.request.handler.render.WebPageRenderer.respond(WebPageRenderer.java:244) > at > org.apache.wicket.core.request.handler.RenderPageRequestHandler.respond(RenderPageRequestHandler.java:165) > at > org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:814) > at > org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64) > at > org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:253) > at > org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:210) > at > org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:281) > at > org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:188) > at > org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:245) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) > at > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) > at > org.apache.catalina.core.StandardContextValve.__invoke(StandardContextValve.java:123) > at > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java) > at > org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) > at > org.apache.catalina.core.StandardHostValve.__invoke(StandardHostValve.java:168) > at > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java) > at > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) > at > org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929) > at > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) > at > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) > at > org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002) > at > org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585) > at > org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) > at java.lang.Thread.run(Thread.java:722) > > Complete stack: > > org.apache.wicket.WicketRuntimeException: Can't instantiate page using > constructor 'public de.mino.web.wicket.DummyPage()'. Might be it doesn't > exist, may be it is not visible (public). > at > org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:193) > at > org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:66) > at > org.apache.wicket.DefaultMapperContext.newPageInstance(DefaultMapperContext.java:133) > at > org.apache.wicket.core.request.handler.PageProvider.resolvePageInstance(PageProvider.java:278) > at > org.apache.wicket.core.request.handler.PageProvider.getPageInstance(PageProvider.java:166) > at > org.apache.wicket.request.handler.render.PageRenderer.getPage(PageRenderer.java:78) > at > org.apache.wicket.request.handler.render.WebPageRenderer.renderPage(WebPageRenderer.java:94) > at > org.apache.wicket.request.handler.render.WebPageRenderer.respond(WebPageRenderer.java:244) > at > org.apache.wicket.core.request.handler.RenderPageRequestHandler.respond(RenderPageRequestHandler.java:165) > at > org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:814) > at > org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64) > at > org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:253) > at > org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:210) > at > org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:281) > at > org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:188) > > java.lang.reflect.InvocationTargetException > at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native > Method) > at > sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) > at java.lang.reflect.Constructor.newInstance(Constructor.java:525) > at > org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:174) > at > org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:66) > at > org.apache.wicket.DefaultMapperContext.newPageInstance(DefaultMapperContext.java:133) > at > org.apache.wicket.core.request.handler.PageProvider.resolvePageInstance(PageProvider.java:278) > at > org.apache.wicket.core.request.handler.PageProvider.getPageInstance(PageProvider.java:166) > at > org.apache.wicket.request.handler.render.PageRenderer.getPage(PageRenderer.java:78) > at > org.apache.wicket.request.handler.render.WebPageRenderer.renderPage(WebPageRenderer.java:94) > at > org.apache.wicket.request.handler.render.WebPageRenderer.respond(WebPageRenderer.java:244) > at > org.apache.wicket.core.request.handler.RenderPageRequestHandler.respond(RenderPageRequestHandler.java:165) > at > org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:814) > at > org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64) > at > org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:253) > at > org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:210) > at > org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:281) > at > org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:188) > > net.sf.cglib.core.CodeGenerationException: > java.lang.IllegalArgumentException-->Protected method: > $getStaticMetaClass()Lgroovy/lang/MetaClass; > at net.sf.cglib.core.ReflectUtils.newInstance(ReflectUtils.java:235) > at net.sf.cglib.core.ReflectUtils.newInstance(ReflectUtils.java:220) > at net.sf.cglib.core.ReflectUtils.newInstance(ReflectUtils.java:216) > at net.sf.cglib.proxy.Enhancer.createUsingReflection(Enhancer.java:643) > at net.sf.cglib.proxy.Enhancer.firstInstance(Enhancer.java:538) > at > net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:225) > at net.sf.cglib.proxy.Enhancer.createHelper(Enhancer.java:377) > at net.sf.cglib.proxy.Enhancer.create(Enhancer.java:285) > at > org.apache.wicket.proxy.LazyInitProxyFactory.createProxy(LazyInitProxyFactory.java:190) > at > org.apache.wicket.guice.GuiceFieldValueFactory.getFieldValue(GuiceFieldValueFactory.java:69) > at org.apache.wicket.injection.Injector.inject(Injector.java:111) > at > org.apache.wicket.guice.GuiceComponentInjector.inject(GuiceComponentInjector.java:122) > at > org.apache.wicket.guice.GuiceComponentInjector.onInstantiation(GuiceComponentInjector.java:128) > at > org.apache.wicket.application.ComponentInstantiationListenerCollection$1.notify(ComponentInstantiationListenerCollection.java:38) > at > org.apache.wicket.application.ComponentInstantiationListenerCollection$1.notify(ComponentInstantiationListenerCollection.java:34) > at > org.apache.wicket.util.listener.ListenerCollection.notify(ListenerCollection.java:80) > at > org.apache.wicket.application.ComponentInstantiationListenerCollection.onInstantiation(ComponentInstantiationListenerCollection.java:33) > at org.apache.wicket.Component.<init>(Component.java:683) > at org.apache.wicket.MarkupContainer.<init>(MarkupContainer.java:120) > at org.apache.wicket.Page.<init>(Page.java:172) > at org.apache.wicket.Page.<init>(Page.java:136) > at org.apache.wicket.markup.html.WebPage.<init>(WebPage.java:76) > at de.mino.web.wicket.DummyPage.<init>(DummyPage.java:47) > at java.lang.reflect.Constructor.newInstance(Constructor.java:525) > at > org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:174) > at > org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:66) > at > org.apache.wicket.DefaultMapperContext.newPageInstance(DefaultMapperContext.java:133) > at > org.apache.wicket.core.request.handler.PageProvider.resolvePageInstance(PageProvider.java:278) > at > org.apache.wicket.core.request.handler.PageProvider.getPageInstance(PageProvider.java:166) > at > org.apache.wicket.request.handler.render.PageRenderer.getPage(PageRenderer.java:78) > at > org.apache.wicket.request.handler.render.WebPageRenderer.renderPage(WebPageRenderer.java:94) > at > org.apache.wicket.request.handler.render.WebPageRenderer.respond(WebPageRenderer.java:244) > at > org.apache.wicket.core.request.handler.RenderPageRequestHandler.respond(RenderPageRequestHandler.java:165) > at > org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:814) > at > org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64) > at > org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:253) > at > org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:210) > at > org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:281) > at > org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:188) > > The injected instances are actually wrapped in > 'org.apache.wicket.proxy.LazyInitProxyFactory$CGLibInterceptor' - why? What > if I don't want it to be lazy, then I guess there would be no CGLIB magic > and the problem wouldn't happen. Can this be turned off somehow, that the > Guice is used right from the start? > Is this Groovy problem known and is there a solution to it? I would really > like to use Groovy as implementation language for some of my services... > > Regards, > wujek -- Martin Grigorov jWeekend Training, Consulting, Development http://jWeekend.com --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org