Last cause: can't serialize class $Proxy23

2013-07-18 Thread Daniel Watrous
My Wicket application uses Guice for DI and some AOP. I have successfully
injected a DAO and used that to display records. However, when I try to
save a new record in my form, I get the following exception



Root cause:

java.lang.IllegalArgumentException: can't serialize class $Proxy23
 at org.bson.BasicBSONEncoder._putObjectField(BasicBSONEncoder.java:270)
 at org.bson.BasicBSONEncoder.putObject(BasicBSONEncoder.java:174)
 at org.bson.BasicBSONEncoder._putObjectField(BasicBSONEncoder.java:226)
 at org.bson.BasicBSONEncoder.putObject(BasicBSONEncoder.java:174)
 at org.bson.BasicBSONEncoder._putObjectField(BasicBSONEncoder.java:226)
 at org.bson.BasicBSONEncoder.putObject(BasicBSONEncoder.java:174)
 at org.bson.BasicBSONEncoder.putObject(BasicBSONEncoder.java:120)
 at com.mongodb.DefaultDBEncoder.writeObject(DefaultDBEncoder.java:27)
 at com.mongodb.OutMessage.putObject(OutMessage.java:289)
 at com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:239)
 at com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:204)
 at com.mongodb.DBCollection.insert(DBCollection.java:148)
 at com.mongodb.DBCollection.insert(DBCollection.java:91)
 at com.mongodb.DBCollection.save(DBCollection.java:810)
 at com.google.code.morphia.DatastoreImpl.save(DatastoreImpl.java:731)
 at com.google.code.morphia.DatastoreImpl.save(DatastoreImpl.java:793)
 at com.google.code.morphia.DatastoreImpl.save(DatastoreImpl.java:787)
 at 
com.hp.honeybadger.persistence.dao.morphia.MorphiaCnavUrlDAO.save(MorphiaCnavUrlDAO.java:50)
 at java.lang.reflect.Method.invoke(Method.java:601)
 at 
org.apache.wicket.proxy.LazyInitProxyFactory$JdkHandler.invoke(LazyInitProxyFactory.java:435)
 at $Proxy23.save(Unknown Source)
 at com.hp.honeybadger.console.forms.CnavForm$1.onSubmit(CnavForm.java:72)
 at org.apache.wicket.markup.html.form.Form.delegateSubmit(Form.java:1253)
 at org.apache.wicket.markup.html.form.Form.process(Form.java:925)
 at org.apache.wicket.markup.html.form.Form.onFormSubmitted(Form.java:771)
 at org.apache.wicket.markup.html.form.Form.onFormSubmitted(Form.java:704)
 at java.lang.reflect.Method.invoke(Method.java:601)
 at 
org.apache.wicket.RequestListenerInterface.internalInvoke(RequestListenerInterface.java:258)
 at 
org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:216)
 at 
org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.invokeListener(ListenerInterfaceRequestHandler.java:240)
 at 
org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.respond(ListenerInterfaceRequestHandler.java:226)
 at 
org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:854)
 at 
org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64)
 at 
org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:254)
 at 
org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:211)
 at 
org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:282)
 at 
org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:259)
 at 
org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:201)
 at 
org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:282)
 at 
com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163)
 at 
com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58)
 at 
com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:118)
 at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:113)
 at 
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1332)
 at 
org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:477)
 at 
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)
 at 
org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:524)
 at 
org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:227)
 at 
org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1031)
 at 
org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:406)
 at 
org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:186)
 at 
org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:965)
 at 
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
 at 
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:111)
 at org.eclipse.jetty.server.Server.handle(Server.java:348)
 at 
org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:452)
 at 

Re: Last cause: can't serialize class $Proxy23

2013-07-18 Thread Daniel Watrous
I found that having my DAO implement Serializable got me past the
exception.

Is Wicket attempting to serialize my DAO?


On Thu, Jul 18, 2013 at 11:24 AM, Daniel Watrous dwmaill...@gmail.comwrote:

 My Wicket application uses Guice for DI and some AOP. I have successfully
 injected a DAO and used that to display records. However, when I try to
 save a new record in my form, I get the following exception

 

 Root cause:

 java.lang.IllegalArgumentException: can't serialize class $Proxy23
  at org.bson.BasicBSONEncoder._putObjectField(BasicBSONEncoder.java:270)
  at org.bson.BasicBSONEncoder.putObject(BasicBSONEncoder.java:174)

  at org.bson.BasicBSONEncoder._putObjectField(BasicBSONEncoder.java:226)
  at org.bson.BasicBSONEncoder.putObject(BasicBSONEncoder.java:174)
  at org.bson.BasicBSONEncoder._putObjectField(BasicBSONEncoder.java:226)

  at org.bson.BasicBSONEncoder.putObject(BasicBSONEncoder.java:174)
  at org.bson.BasicBSONEncoder.putObject(BasicBSONEncoder.java:120)
  at com.mongodb.DefaultDBEncoder.writeObject(DefaultDBEncoder.java:27)

  at com.mongodb.OutMessage.putObject(OutMessage.java:289)
  at com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:239)
  at com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:204)
  at com.mongodb.DBCollection.insert(DBCollection.java:148)

  at com.mongodb.DBCollection.insert(DBCollection.java:91)
  at com.mongodb.DBCollection.save(DBCollection.java:810)
  at com.google.code.morphia.DatastoreImpl.save(DatastoreImpl.java:731)
  at com.google.code.morphia.DatastoreImpl.save(DatastoreImpl.java:793)

  at com.google.code.morphia.DatastoreImpl.save(DatastoreImpl.java:787)
  at 
 com.hp.honeybadger.persistence.dao.morphia.MorphiaCnavUrlDAO.save(MorphiaCnavUrlDAO.java:50)
  at java.lang.reflect.Method.invoke(Method.java:601)

  at 
 org.apache.wicket.proxy.LazyInitProxyFactory$JdkHandler.invoke(LazyInitProxyFactory.java:435)
  at $Proxy23.save(Unknown Source)
  at com.hp.honeybadger.console.forms.CnavForm$1.onSubmit(CnavForm.java:72)

  at org.apache.wicket.markup.html.form.Form.delegateSubmit(Form.java:1253)
  at org.apache.wicket.markup.html.form.Form.process(Form.java:925)
  at org.apache.wicket.markup.html.form.Form.onFormSubmitted(Form.java:771)

  at org.apache.wicket.markup.html.form.Form.onFormSubmitted(Form.java:704)
  at java.lang.reflect.Method.invoke(Method.java:601)
  at 
 org.apache.wicket.RequestListenerInterface.internalInvoke(RequestListenerInterface.java:258)

  at 
 org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:216)
  at 
 org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.invokeListener(ListenerInterfaceRequestHandler.java:240)

  at 
 org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.respond(ListenerInterfaceRequestHandler.java:226)
  at 
 org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:854)

  at 
 org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64)
  at 
 org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:254)
  at 
 org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:211)

  at 
 org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:282)
  at 
 org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:259)
  at 
 org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:201)

  at 
 org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:282)
  at 
 com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163)
  at 
 com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58)

  at 
 com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:118)
  at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:113)
  at 
 org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1332)

  at 
 org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:477)
  at 
 org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)
  at 
 org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:524)

  at 
 org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:227)
  at 
 org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1031)
  at 
 org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:406)

  at 
 org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:186)
  at 
 org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:965)
  at 
 

Re: Last cause: can't serialize class $Proxy23

2013-07-18 Thread Gabriel Landon
Your DAO is declare in your form and you use it inside an inner method, so
yes, wicket is going to serrialize it.

I think you should use @SpringBean, instead of @inject.




--
View this message in context: 
http://apache-wicket.1842946.n4.nabble.com/Last-cause-can-t-serialize-class-Proxy23-tp4660352p4660358.html
Sent from the Users forum mailing list archive at Nabble.com.

-
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org



Re: Last cause: can't serialize class $Proxy23

2013-07-18 Thread Dan Retzlaff
No, Wicket is not trying to serialize your DAO. The exception occurs in the
action phase of the request handling. It looks like you've passed an object
to MongoDB which has a reference to the @Injected DAO, or at least to the
component that has the DAO. It's this MongoDB DefaultDBEncoder.writeObject
thing that's serializing/encoding something it shouldn't.

If it's not clear by inspection how the object being passed to save() holds
a reference (e.g. by being an inner class) then set a breakpoint and the
debugger should point to the offending reference.


On Thu, Jul 18, 2013 at 2:34 PM, Daniel Watrous dwmaill...@gmail.comwrote:

 I found that having my DAO implement Serializable got me past the
 exception.

 Is Wicket attempting to serialize my DAO?


 On Thu, Jul 18, 2013 at 11:24 AM, Daniel Watrous dwmaill...@gmail.com
 wrote:

  My Wicket application uses Guice for DI and some AOP. I have successfully
  injected a DAO and used that to display records. However, when I try to
  save a new record in my form, I get the following exception
 
  
 
  Root cause:
 
  java.lang.IllegalArgumentException: can't serialize class $Proxy23
   at
 org.bson.BasicBSONEncoder._putObjectField(BasicBSONEncoder.java:270)
   at org.bson.BasicBSONEncoder.putObject(BasicBSONEncoder.java:174)
 
   at
 org.bson.BasicBSONEncoder._putObjectField(BasicBSONEncoder.java:226)
   at org.bson.BasicBSONEncoder.putObject(BasicBSONEncoder.java:174)
   at
 org.bson.BasicBSONEncoder._putObjectField(BasicBSONEncoder.java:226)
 
   at org.bson.BasicBSONEncoder.putObject(BasicBSONEncoder.java:174)
   at org.bson.BasicBSONEncoder.putObject(BasicBSONEncoder.java:120)
   at
 com.mongodb.DefaultDBEncoder.writeObject(DefaultDBEncoder.java:27)
 
   at com.mongodb.OutMessage.putObject(OutMessage.java:289)
   at com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:239)
   at com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:204)
   at com.mongodb.DBCollection.insert(DBCollection.java:148)
 
   at com.mongodb.DBCollection.insert(DBCollection.java:91)
   at com.mongodb.DBCollection.save(DBCollection.java:810)
   at
 com.google.code.morphia.DatastoreImpl.save(DatastoreImpl.java:731)
   at
 com.google.code.morphia.DatastoreImpl.save(DatastoreImpl.java:793)
 
   at
 com.google.code.morphia.DatastoreImpl.save(DatastoreImpl.java:787)
   at
 com.hp.honeybadger.persistence.dao.morphia.MorphiaCnavUrlDAO.save(MorphiaCnavUrlDAO.java:50)
   at java.lang.reflect.Method.invoke(Method.java:601)
 
   at
 org.apache.wicket.proxy.LazyInitProxyFactory$JdkHandler.invoke(LazyInitProxyFactory.java:435)
   at $Proxy23.save(Unknown Source)
   at
 com.hp.honeybadger.console.forms.CnavForm$1.onSubmit(CnavForm.java:72)
 
   at
 org.apache.wicket.markup.html.form.Form.delegateSubmit(Form.java:1253)
   at org.apache.wicket.markup.html.form.Form.process(Form.java:925)
   at
 org.apache.wicket.markup.html.form.Form.onFormSubmitted(Form.java:771)
 
   at
 org.apache.wicket.markup.html.form.Form.onFormSubmitted(Form.java:704)
   at java.lang.reflect.Method.invoke(Method.java:601)
   at
 org.apache.wicket.RequestListenerInterface.internalInvoke(RequestListenerInterface.java:258)
 
   at
 org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:216)
   at
 org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.invokeListener(ListenerInterfaceRequestHandler.java:240)
 
   at
 org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.respond(ListenerInterfaceRequestHandler.java:226)
   at
 org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:854)
 
   at
 org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64)
   at
 org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:254)
   at
 org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:211)
 
   at
 org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:282)
   at
 org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:259)
   at
 org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:201)
 
   at
 org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:282)
   at
 com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163)
   at
 com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58)
 
   at
 com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:118)
   at
 com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:113)
   at
 org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1332)
 
   at