I'm using the IBM SBT Java API in Xpages to get a list of profiles and store in viewScope. (sbtsdk-1.0.3.20140723-1200.zip from openntf) That works fine when the page first opens.
When a partial refresh occurs the following error comes up...
java.io.InvalidClassException: com.ibm.sbt.services.client.connections.profiles.ProfileList; com.ibm.sbt.services.client.connections.profiles.ProfileList; no valid constructor
com.ibm.sbt.services.client.connections.profiles.ProfileList; com.ibm.sbt.services.client.connections.profiles.ProfileList; no valid constructor
so some kind of problem when getting it back again. The odd thing is that if I look at the source code here (sdk\com.ibm.sbt.core\src\main\java\com\ibm\sbt\services\client\connections\profiles) there's no ProfilesList java file. However if I look in the equivalent place in the jar I do see a ProfileList.class file.
So where's the source gone? I wanted to check to see if it had an explicit serialVersionUID
EDIT This works if I change my ServiceBean to convert the ProfileList into an ArrayList instead so there must be something wrong with Serializing ProfileList directly.
NB: Full stack trace..
com.ibm.xsp.FacesExceptionEx: java.io.InvalidClassException: com.ibm.sbt.services.client.connections.profiles.ProfileList; com.ibm.sbt.services.client.connections.profiles.ProfileList; no valid constructor
com.ibm.xsp.application.AbstractStateManager.restoreView(AbstractStateManager.java:100)
com.ibm.xsp.application.StateManagerImpl.restoreView(StateManagerImpl.java:179)
com.ibm.xsp.application.ViewHandlerExImpl._restoreView(ViewHandlerExImpl.java:386)
com.ibm.xsp.application.ViewHandlerExImpl.restoreView(ViewHandlerExImpl.java:358)
com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:168)
com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:210)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:96)
com.ibm.xsp.controller.FacesControllerImpl.execute(FacesControllerImpl.java:256)
com.ibm.xsp.webapp.FacesServlet.serviceView(FacesServlet.java:228)
com.ibm.xsp.webapp.FacesServletEx.serviceView(FacesServletEx.java:157)
com.ibm.xsp.webapp.FacesServlet.service(FacesServlet.java:160)
com.ibm.xsp.webapp.FacesServletEx.service(FacesServletEx.java:138)
com.ibm.xsp.webapp.DesignerFacesServlet.service(DesignerFacesServlet.java:103)
com.ibm.designer.runtime.domino.adapter.ComponentModule.invokeServlet(ComponentModule.java:576)
com.ibm.domino.xsp.module.nsf.NSFComponentModule.invokeServlet(NSFComponentModule.java:1335)
com.ibm.designer.runtime.domino.adapter.ComponentModule$AdapterInvoker.invokeServlet(ComponentModule.java:853)
com.ibm.designer.runtime.domino.adapter.ComponentModule$ServletInvoker.doService(ComponentModule.java:796)
com.ibm.designer.runtime.domino.adapter.ComponentModule.doService(ComponentModule.java:565)
com.ibm.domino.xsp.module.nsf.NSFComponentModule.doService(NSFComponentModule.java:1319)
com.ibm.domino.xsp.module.nsf.NSFService.doServiceInternal(NSFService.java:662)
com.ibm.domino.xsp.module.nsf.NSFService.doService(NSFService.java:482)
org.openntf.domino.xsp.adapter.OpenntfHttpService.doService(OpenntfHttpService.java:89)
com.ibm.designer.runtime.domino.adapter.LCDEnvironment.doService(LCDEnvironment.java:357)
com.ibm.designer.runtime.domino.adapter.LCDEnvironment.service(LCDEnvironment.java:313)
com.ibm.domino.xsp.bridge.http.engine.XspCmdManager.service(XspCmdManager.java:272)
java.io.InvalidClassException: com.ibm.sbt.services.client.connections.profiles.ProfileList; com.ibm.sbt.services.client.connections.profiles.ProfileList; no valid constructor
java.io.ObjectStreamClass.checkDeserialize(ObjectStreamClass.java:791)
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1767)
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1345)
java.io.ObjectInputStream.readObject(ObjectInputStream.java:364)
java.util.HashMap.readObject(HashMap.java:957)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
java.lang.reflect.Method.invoke(Method.java:611)
java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1049)
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1889)
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1793)
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1345)
java.io.ObjectInputStream.readUnshared(ObjectInputStream.java:454)
com.ibm.xsp.application.AbstractSerializingStateManager$FastObjectInputStream.readObjectEx(AbstractSerializingStateManager.java:496)
com.ibm.xsp.application.AbstractSerializingStateManager$FastObjectInputStream.readObjectEx(AbstractSerializingStateManager.java:503)
com.ibm.xsp.application.AbstractSerializingStateManager$FastObjectInputStream.readObjectEx(AbstractSerializingStateManager.java:482)
com.ibm.xsp.application.AbstractSerializingStateManager$FastObjectInputStream.readObjectEx(AbstractSerializingStateManager.java:503)
com.ibm.xsp.application.AbstractSerializingStateManager$FastObjectInputStream.readObjectEx(AbstractSerializingStateManager.java:503)
com.ibm.xsp.application.AbstractSerializingStateManager.readSerializedView(AbstractSerializingStateManager.java:215)
com.ibm.xsp.application.AbstractSerializingStateManager.doRestoreView(AbstractSerializingStateManager.java:127)
com.ibm.xsp.application.FileStateManager.doRestoreView(FileStateManager.java:249)
com.ibm.xsp.application.AbstractStateManager.restoreView(AbstractStateManager.java:93)
com.ibm.xsp.application.StateManagerImpl.restoreView(StateManagerImpl.java:179)
com.ibm.xsp.application.ViewHandlerExImpl._restoreView(ViewHandlerExImpl.java:386)
com.ibm.xsp.application.ViewHandlerExImpl.restoreView(ViewHandlerExImpl.java:358)
com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:168)
com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:210)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:96)
com.ibm.xsp.controller.FacesControllerImpl.execute(FacesControllerImpl.java:256)
com.ibm.xsp.webapp.FacesServlet.serviceView(FacesServlet.java:228)
com.ibm.xsp.webapp.FacesServletEx.serviceView(FacesServletEx.java:157)
com.ibm.xsp.webapp.FacesServlet.service(FacesServlet.java:160)
com.ibm.xsp.webapp.FacesServletEx.service(FacesServletEx.java:138)
com.ibm.xsp.webapp.DesignerFacesServlet.service(DesignerFacesServlet.java:103)
com.ibm.designer.runtime.domino.adapter.ComponentModule.invokeServlet(ComponentModule.java:576)
com.ibm.domino.xsp.module.nsf.NSFComponentModule.invokeServlet(NSFComponentModule.java:1335)
com.ibm.designer.runtime.domino.adapter.ComponentModule$AdapterInvoker.invokeServlet(ComponentModule.java:853)
com.ibm.designer.runtime.domino.adapter.ComponentModule$ServletInvoker.doService(ComponentModule.java:796)
com.ibm.designer.runtime.domino.adapter.ComponentModule.doService(ComponentModule.java:565)
com.ibm.domino.xsp.module.nsf.NSFComponentModule.doService(NSFComponentModule.java:1319)
com.ibm.domino.xsp.module.nsf.NSFService.doServiceInternal(NSFService.java:662)
com.ibm.domino.xsp.module.nsf.NSFService.doService(NSFService.java:482)
org.openntf.domino.xsp.adapter.OpenntfHttpService.doService(OpenntfHttpService.java:89)
com.ibm.designer.runtime.domino.adapter.LCDEnvironment.doService(LCDEnvironment.java:357)
com.ibm.designer.runtime.domino.adapter.LCDEnvironment.service(LCDEnvironment.java:313)
com.ibm.domino.xsp.bridge.http.engine.XspCmdManager.service(XspCmdManager.java:272)
It appears that these classes have been removed in version 1.1.0, which causes some issues in XPages.
See issue in github here https://github.com/OpenNTF/SocialSDK/issues/1638