2010-07-16 4 views
1

Ce qui suit fonctionne quand il se trouve dans la classe EntryPoint de mon application, mais pas lorsqu'il est déplacé ailleurs.Echec du RPC GWT en dehors de la classe EntryPoint

public MyServiceAsync service = GWT.create(MyService.class); 

service.someFunction(callback); 

Il ne semble pas de lancer une exception elle-même, mais l'application se bloque sur un NullPointerException quand il cherche des objets qui étaient censés être instancié avec les données de l'appel de service. J'ai essayé de le suivre à travers le débogueur, mais il ne parvient jamais au code côté serveur ou au rappel.

Ai-je raté quelque chose? Je préférerais que tous mes appels de service n'aient pas besoin d'être envoyés à partir de la classe EntryPoint.

+0

Vous avez vérifié que vous avez une implémentation de MyService sous le package serveur, n'est-ce pas? –

+0

Oui, le service est complètement implémenté et fonctionne correctement lorsqu'il est instancié et appelé depuis la classe EntryPoint. Il échoue seulement quand ceci est fait d'une classe différente. – Luke

+0

Je devine: - Assurez-vous juste que votre appel de GWT.create() tombe sous le paquet de client (ou le sous-paquetage dans le client) –

Répondre

0

Ce problème a-t-il été résolu? Si non, pouvez-vous fournir un échantillon de code minimal qui reproduit l'erreur que vous obtenez?

Luc a écrit:

NullPointerException quand il cherche des objets qui étaient censés être instancié avec les données de l'appel de service

Cela sonne comme vous ne pouvez pas être comptables de la nature asynchrone de l'appel RPC. Ces objets ne seront pas instanciés avant le retour de l'appel. Si vous essayez de les utiliser dans le code après l'appel de service, cela ne fonctionnera pas. Vous devez utiliser la méthode onSuccess() du callback pour faire tout ce qui dépend de la disponibilité des résultats de l'appel.

Je ne fais que deviner sur la base de l'information contenue dans votre description initiale. Plus de détails, y compris un échantillon si possible, permettraient de fournir une réponse plus définitive.