Hello everybody,
I think this is a stupid question but I really cant make it work. I am
using appfuse 1.9.4 and webwork. In appfuse, it is default that
BaseObject class implements java.io.Serializable. I have a superclass
named BaseModel:
public abstract class BaseModel extends BaseObject implements
Serializable {
private Long id;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
}
and I have a Study object:
public class Study extends BaseModel implements Comparable<Study> {
private static final long serialVersionUID = 12345L;
private String name;
private Set<StudyPageSet> studyPageSets = new TreeSet();
private Set<StudyPage> studyPages = new TreeSet();
public Study() {}
public Study( String name ){
this.setName(name);
}
public Set<StudyPageSet> getStudyPageSets() {
return studyPageSets;
}
public void setStudyPageSets(Set<StudyPageSet> studyPageSets) {
this.studyPageSets = studyPageSets;
}
public void addStudyPageSets( StudyPageSet studyPageSet ){
studyPageSet.setParentStudyHead(this);
this.studyPageSets.add(studyPageSet);
}
public void removeStudyPageSet( StudyPageSet studyPageSet ){
studyPageSet.setParentStudyHead(null);
this.studyPageSets.remove(studyPageSet);
}
public int compareTo( Study study ) {
if ( this.sortOrder < study.getSortOrder() )
return -1;
if ( this.sortOrder == study.getSortOrder() )
return 0;
else
return 1;
}
public boolean equals(Object o) {
if (!(o instanceof Study))
return false;
Study n = (Study)o;
return n.getName().equals(name) &&
n.getId().equals(this.getId());
}
public int hashCode() {
return 31*name.hashCode();
}
public String toString() {
return name;
}
private void readObject(ObjectInputStream aInputStream) throws
ClassNotFoundException, IOException {
//always perform the default de-serialization first
aInputStream.defaultReadObject();
}
private void writeObject(ObjectOutputStream aOutputStream) throws
IOException {
//perform the default serialization for all non-transient,
non-static fields
aOutputStream.defaultWriteObject();
}
}
I have no errors in my runtime but the problem is when I restarted my
tomcat, I have an error in my log file(catalina.out) just like this:
[Thinkscan] ERROR [main] ManagerBase.start(638) | Exception loading
sessions from persistent storage
java.lang.NullPointerException
at com.voxsant.thinkscan.model.Study.hashCode(Study.java:211)
at
com.voxsant.thinkscan.model.StudyPageSet.hashCode(StudyPageSet.java:111)
at java.util.HashMap.putForCreate(HashMap.java:461)
at java.util.HashMap.readObject(HashMap.java:1068)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:946)
at
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1809)
at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
at
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1908)
at
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1832)
at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
at
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1908)
at
java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:479)
at com.voxsant.thinkscan.model.Study.readObject(Study.java:229)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:946)
at
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1809)
at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348)
at
org.apache.catalina.session.StandardSession.readObject(StandardSession.java:1392)
at
org.apache.catalina.session.StandardSession.readObjectData(StandardSession.java:921)
at
org.apache.catalina.session.StandardManager.doLoad(StandardManager.java:393)
at
org.apache.catalina.session.StandardManager.load(StandardManager.java:320)
at
org.apache.catalina.session.StandardManager.start(StandardManager.java:636)
at
org.apache.catalina.core.ContainerBase.setManager(ContainerBase.java:431)
at
org.apache.catalina.core.StandardContext.start(StandardContext.java:4155)
at
org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:759)
at
org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:739)
at
org.apache.catalina.core.StandardHost.addChild(StandardHost.java:524)
at
org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:904)
at
org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:867)
at
org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:474)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1122)
at
org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:310)
at
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at
org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1021)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:718)
at
org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1013)
at
org.apache.catalina.core.StandardEngine.start(StandardEngine.java:442)
at
org.apache.catalina.core.StandardService.start(StandardService.java:450)
at
org.apache.catalina.core.StandardServer.start(StandardServer.java:709)
at org.apache.catalina.startup.Catalina.start(Catalina.java:551)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:294)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:432)
What could be my error in my implementation of Serializable? I am a
newbie in implementing this so any kind of help is very much
appreciated.
Thank you and God bless.
Addi
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]