2009-06-18 6 views
2

Je voudrais créer une interface REST pour mon programme Java Google App Engine. J'ai pensé que je commencerais par générer du code XML à partir de mon POJOS. Cependant, il semble que XStream est mordu par les restrictions de GAE.POJO vers une chaîne XML dans Google App Engine?

Que puis-je utiliser pour générer une chaîne XML dans Google App Engine?

Merci.

Edit 1: Voici le début de l'exception:

javax.servlet.ServletContext log: Exception while dispatching incoming RPC call 
com.google.gwt.user.server.rpc.UnexpectedException: Service method 'public abstract java.lang.String com.mydomain.client.ObjectService.sendObject(com.mydomain.client.models.myobject)' threw an unexpected exception: java.security.AccessControlException: access denied (java.io.SerializablePermission enableSubclassImplementation) 
+1

Quelles sont les restrictions qui interdisent Xstream? Si vous nous le dites, nous pourrions peut-être vous suggérer une bibliothèque qui ne serait pas soumise aux mêmes restrictions. – skaffman

+0

Incidemment, Spring-WS utilise le terme POX pour "Plain old XML" ..... POJO à POX .... Je l'aime bien. – skaffman

+0

Message mis à jour pour inclure l'erreur "SerializablePermission". –

Répondre

1

L'exception est provoquée par un java.io.SerializablePermission qui, selon la javadoc est destiné à permettre:

mise en oeuvre de la sous-catégorie de ObjectOutputStream ou ObjectInputStream pour remplacer la sérialisation par défaut ou désérialisation, respectivement, des objets

XStream pourrait être l'utilisation des flux d'objets sous les couvertures, et tomber sous le coup de cette autorisation ne pas être accordé.

Est-ce que Google App Engine ont en fait une liste blanche, ou tout simplement un ensemble d'autorisations restreintes? JAXB2 n'utilise pas les flux d'objets, alors avez-vous déjà essayé cela?

+0

Whitelist: http://code.google.com/appengine/docs/java/jrewhitelist.html –

1

Pour la même restriction (un patch est en cours cependant) je fini la production JSON en utilisant la bibliothèque org.json. Aussi JAXB ne semble pas être dans la liste blanche.

1

Essayez Jersey - il vous donnera XML, JSON, et beaucoup plus via REST; tous utilisant des méthodes annotées.

Il fonctionne pour moi, mais il y a des mises en garde:

Voir here et here

+0

Utilisez-vous Jersey sur Google App Engine? –