This page (revision-25) was last changed on 23-Apr-2022 17:05 by Harry Metske

This page was created on 23-Apr-2022 17:05 by Harry Metske

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Page revision history

Version Date Modified Size Author Changes ... Change note
25 23-Apr-2022 17:05 5 KB Harry Metske to previous
24 23-Apr-2022 17:05 5 KB Harry Metske to previous | to last
23 23-Apr-2022 17:05 5 KB Harry Metske to previous | to last
22 23-Apr-2022 17:05 5 KB Harry Metske to previous | to last
21 23-Apr-2022 17:05 4 KB Harry Metske to previous | to last

Page References

Incoming links Outgoing links

Version management

Difference between version and

At line 12 changed one line
* [JDOQL-QuickRef.pdf]
At line 15 changed one line
|[Java API|http://db.apache.org/jdo/api23/apidocs/index.html] |Comparing JDO/JPA|http://db.apache.org/jdo/jdo_v_jpa.html]
|[Apache DB Home|http://db.apache.org/jdo/]|[Datanucleus Home|http://www.datanucleus.org/]| [Java API|http://db.apache.org/jdo/api23/apidocs/index.html] |[Comparing JDO/JPA|http://db.apache.org/jdo/jdo_v_jpa.html]
At line 77 changed one line
!! Things noticed
!! Things noticed / experiences
At line 81 changed 2 lines
HttpSessions should be enabled in appengine-web.xml, The implementation uses the App Engine datastore and memcache to store session data.
* HttpSessions should be enabled in appengine-web.xml, The implementation uses the App Engine datastore and memcache to store session data.
* make sure that all objects in the session are Serializable (test environment accepts it, but GAE not)
* changing names of classes/packages of objects that were in the session earlier will cause problems:
%%small {{{
Caused by: java.lang.ClassNotFoundException: nl.computerhok.gae.test1.dao.Peuter
at com.google.appengine.runtime.Request.process-e0ffd4c85af8f259(Request.java)
at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source)
at java.io.ObjectInputStream.readClassDesc(Unknown Source)
at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.readObject(Unknown Source)
at java.util.HashMap.readObject(Unknown Source)
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 java.io.ObjectStreamClass.invokeReadObject(Unknown Source)
at java.io.ObjectInputStream.readSerialData(Unknown Source)
at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.defaultReadFields(Unknown Source)
at java.io.ObjectInputStream.readSerialData(Unknown Source)
at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.readObject(Unknown Source)
at com.google.apphosting.runtime.jetty.SessionManager.deserialize(SessionManager.java:385)
... 35 more
}}} %%
You only get into the application using the version identifier in the URL, like [http://3.latest.computerhok01.appspot.com/]
At line 113 added 30 lines
! (no) log4j
If you start using log4j in your webapp (and you added a log4j.jar to war/WEB-INF/lib and to your project's build path), JDO enhance ant task fails with a NoClassDefFoundError. Few hits on Google on that, finally removed log4j all together and switched to Java util logging.
! Datastore
* The datastore does not support the SQL language, you can only use JDOQL, for example, this is not supported :
%%prettify
{{{
Query query = getPersistenceManager().newQuery(Query.SQL, queryString);
}}}
%%
__Only one property per query may have inequality filters (<=, >=, <, >)..__
So you cannot do something like :
{{{
SELECT * FROM Peuter where geslacht>'M' AND achternaam>'b'
}}}
Case insensitive queries ?
What happens if you first create some entities, and then you add additional persistent fields ("columns") to the class ?\\
Well, that's nice, that simply works, tested by adding an adres field :-)
!