pbtrn10k
unread,Dec 12, 2009, 10:42:39 AM12/12/09Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Sign in to report message
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to Google App Engine
I have an abstract class Person which contains, among other things,
the following code:
@PersistenceCapable(identityType = IdentityType.APPLICATION)
public abstract class Person {
@Persistent(valueStrategy = IdGeneratorStrategy.UNSPECIFIED)
@PrimaryKey
private String username; // the username of this person
@Persistent
private String passwordHash; // the hashed password of this person
and another abstract class Staff which extends it...
@PersistenceCapable
public abstract class Staff extends Person {
/**
* @see com.appspot.cs3099d.nhit.model.Person
*/
public Staff(String userName, String password, String title, String
fname,
List<String> mnames, String lname) {
super(userName, password, title, fname, mnames, lname);
}
and a class Administrator which extends this...
@PersistenceCapable
public class Administrator extends Staff {
/**
* @see com.appspot.cs3099d.nhit.model.Staff
*/
public Administrator(String userName, String password, String title,
String fname, List<String> mnames, String lname) {
super(userName, password, title, fname, mnames, lname);
}
I am trying to store a new Administrator object in the datastore
inside a RemoteServiceServlet...
Person p = new Administrator
("user","userpassword","","super",null,"user");
PersistenceManager pm = PMF.get().getPersistenceManager();
pm.makePersistent(p);
pm.close();
And I receive this error...
checking initialisation conditions
retrieved initialisation conditions
12-Dec-2009 15:30:23
com.google.appengine.tools.development.ApiProxyLocalImpl log
SEVERE: [1260631823692000] javax.servlet.ServletContext log: Exception
while dispatching incoming RPC call
com.google.gwt.user.server.rpc.UnexpectedException: Service method
'public abstract void
com.appspot.cs3099d.nhit.client.InitService.initialise()' threw an
unexpected exception: javax.jdo.JDOFatalInternalException: Cannot
instantiate abstract class.
at com.google.gwt.user.server.rpc.RPC.encodeResponseForFailure
(RPC.java:360)
at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse
(RPC.java:546)
at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall
(RemoteServiceServlet.java:166)
at com.google.gwt.user.server.rpc.RemoteServiceServlet.doPost
(RemoteServiceServlet.java:86)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:713)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:
487)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter
(ServletHandler.java:1093)
at
com.appspot.cs3099d.nhit.server.user.LogInVerificationFilter.doFilter
(LogInVerificationFilter.java:47)
at com.appspot.cs3099d.nhit.server.HttpFilter.doFilter
(HttpFilter.java:34)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter
(ServletHandler.java:1084)
at
com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter
(TransactionCleanupFilter.java:43)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter
(ServletHandler.java:1084)
at com.google.appengine.tools.development.StaticFileFilter.doFilter
(StaticFileFilter.java:121)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter
(ServletHandler.java:1084)
at org.mortbay.jetty.servlet.ServletHandler.handle
(ServletHandler.java:360)
at org.mortbay.jetty.security.SecurityHandler.handle
(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle
(SessionHandler.java:181)
at org.mortbay.jetty.handler.ContextHandler.handle
(ContextHandler.java:712)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:
405)
at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle
(DevAppEngineWebAppContext.java:54)
at org.mortbay.jetty.handler.HandlerWrapper.handle
(HandlerWrapper.java:139)
at com.google.appengine.tools.development.JettyContainerService
$ApiProxyHandler.handle(JettyContainerService.java:342)
at org.mortbay.jetty.handler.HandlerWrapper.handle
(HandlerWrapper.java:139)
at org.mortbay.jetty.Server.handle(Server.java:313)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:
506)
at org.mortbay.jetty.HttpConnection$RequestHandler.content
(HttpConnection.java:844)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:644)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:205)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381)
at org.mortbay.io.nio.SelectChannelEndPoint.run
(SelectChannelEndPoint.java:396)
at org.mortbay.thread.BoundedThreadPool$PoolThread.run
(BoundedThreadPool.java:442)
Caused by: javax.jdo.JDOFatalInternalException: Cannot instantiate
abstract class.
at com.appspot.cs3099d.nhit.model.Person.jdoNewInstance(Person.java)
at org.datanucleus.state.JDOStateManagerImpl.saveFields
(JDOStateManagerImpl.java:1048)
at
org.datanucleus.state.JDOStateManagerImpl.initialiseForPersistentNew
(JDOStateManagerImpl.java:400)
at
org.datanucleus.state.StateManagerFactory.newStateManagerForPersistentNew
(StateManagerFactory.java:151)
at org.datanucleus.ObjectManagerImpl.persistObjectInternal
(ObjectManagerImpl.java:1297)
at org.datanucleus.ObjectManagerImpl.persistObject
(ObjectManagerImpl.java:1175)
at org.datanucleus.jdo.JDOPersistenceManager.jdoMakePersistent
(JDOPersistenceManager.java:669)
at org.datanucleus.jdo.JDOPersistenceManager.makePersistent
(JDOPersistenceManager.java:694)
at com.appspot.cs3099d.nhit.server.InitServiceImpl.initialise
(InitServiceImpl.java:43)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.google.appengine.tools.development.agent.runtime.Runtime.invoke
(Runtime.java:100)
at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse
(RPC.java:527)
... 30 more
I couldn't find anything on this anywhere. The Javadoc page for this
exception says this: "This class represents errors in the
implementation for which no user error handling is possible. The error
should be reported to the JDO vendor for corrective action." I hope
this is the right place!! ;)
(Also I hope that post's not too badly formatted, couldn't find
guidelines for posting code)