I have a wicket page (java class) which uses a service locater to execute messages on a remote EJB. Though there is no direct reference to the EJB from my wicket page there is a reference to the service locater which uses JNDI to get a reference to the remote EJB. I get the following error (FYI, This error does not happen in wicket 1.2 but happens in wicket 1.2.6).
WicketMessage: Internal error cloning object. Make sure all dependent objects implement Serializable. Class: com.abc.wicket.LoginPage
java.io.NotSerializableException: com. abc.ejb. AFacadeBean. AFacadeBean _7gl30w_EOImpl
The EJB implements javax.ejb.SessionBean which extends the serializable interface but the EJB proxy object returned by the WebLogic server does NOT implement serialzable. Below is the class hierarchy of the object located through JNDI. (I printed this using reflectiion)
com. abc.ejb. AFacadeBean. AFacadeBean _7gl30w_HomeImpl
So it seems that I cannot use EJB’s in wicket pages, (I am doing this indirectly through service locaters to decouple the pages from the back end). Any advice about what to do in this situation would be appreciated. Currently I am running in deployment mode since this avoids the checking. I have given some thought to marking the EJB transient in my service locator but would like to hear any insights/design suggestions/advice