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

Reply via email to