ProfilesList gone missing in IBM-SBT? Error when trying to deserialise

68 views Asked by At

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)

1

There are 1 answers

0
Martin Holland On

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