J'ai une classe sérialisable GWT, appelons-la Foo. Foo implémente IsSerializable, possède des membres primitifs et sérialisables ainsi que d'autres membres transitoires et un constructeur sans argument.Étrange exception de sérialisation GWT lors de la méthode de l'objet sérialisé
class Foo implements IsSerializable {
// transient members
// primitive members
public Foo() {}
public void bar() {}
}
Un service qui utilise l'instance de Foo dans la communication RPC.
// server code
public interface MyServiceImpl {
public void doStuff(Foo foo);
}
public interface MyServiceAsync {
void doStuff(Foo foo, AsyncCallback<Void> async);
}
Comment j'utiliser ceci:
private MyServiceAsync myService = GWT.create(MyService.class);
Foo foo = new Foo();
...
AsyncCallback callback = new new AsyncCallback {...};
myService.doStuff(foo, callback);
Dans le cas au-dessus du code est en cours d'exécution, et la méthode onSuccess() de l'instance de rappel est exécuté.
Mais quand je substituez la méthode bar() sur l'instance foo comme ceci:
Foo foo = new Foo() {
public void bar() {
//do smthng different
}
};
AsyncCallback callback = new new AsyncCallback {...};
myService.doStuff(foo, callback);
je reçois le GWT SerializationException.
S'il vous plaît, éclairez-moi, parce que je ne comprends vraiment pas pourquoi.
Commune, personne ne l'avait essayé? Je ne peux pas croire que personne n'avait ce pb avant! –
Évidemment, l'erreur est levée lorsque le client sérialise l'objet à envoyer via RPC. –