2010-06-17 6 views
1

Je développe une interface web en utilisant GWT. En travaillant uniquement avec les widgets, je pouvais déboguer à partir d'Eclipse en utilisant l'extension Firefox, mais maintenant que j'intègre l'interface utilisateur avec d'autres bundles OSGi, je ne peux pas utiliser cette solution.Comment déboguer une application GWT fonctionnant sous OSGi?

Pour le déploiement de l'application GWT, je crée le fichier .war et le convertis en un groupe OSGi en utilisant BND. Ensuite, je lance le conteneur OSGi avec tous les paquets en utilisant Pax Runner et Pax Web et l'application fonctionne correctement, mais quand quelque chose échoue dans le code javascript généré, je n'ai pas d'erreur de sortie ou de débogage décent.

Y at-il un moyen de lancer l'application GWT en "mode débogage" à partir d'OSGi?

Une autre idée qui pourrait aider dans ce scénario?

Mise à jour: Serait-il possible d'instancier com.google.gwt.dev.DevMode ou sa partie avec le connecteur du navigateur de la Activator?

Répondre

1

J'ai enfin réussi à lancer le mode développement en utilisant OSGi, GWT et éventuellement Eclipse. La solution était sur le drapeau -noserver du mode de développement de GWT, il n'est pas conscient des changements de code pendant que l'application est en cours d'exécution, mais il peut être utilisé pour déboguer le code compilé et pour recevoir les traces d'exception.

J'ai également réussi à exécuter le shell de développement sans éclipse, mais si vous n'êtes pas intéressé par cette solution, vous pouvez directement passer à la section d'intégration éclipse.

Sans Eclipse (seules exceptions, pas debug)

Vous devez connaître les informations suivantes:

  • Où avez-vous votre source ($SRC)
  • Où avez-vous votre Bibliothèques GWT ($GWT_PATH), notamment gwt-user.jar et gwt-dev.jar.
  • (Facultatif) le port depuis lequel votre serveur HTTP OSGi dessert l'application ($PORT).
  • L'URL STARTUP de votre application ($URL)
  • Le paquet contenant le fichier .gwt.xml pour votre application ($PACKAGE).

Ensuite, vous devez exécuter:

java -cp $SRC:$GWT_PATH/gwt-user.jar:$GWT_PATH/gwt-dev.jar \ 
    com.google.gwt.dev.DevMode -noserver -port $PORT \ 
    -startupUrl $URL $PACKAGE 

Par ex:

java -cp src/:lib/gwt-2.0.3/gwt-user.jar:lib/gwt-2.0.3/gwt-dev.jar \ 
    com.google.gwt.dev.DevMode -noserver -port 8080 \ 
    -startupUrl httplocalgui.html es.warp.samples.httplocalgui 

Et enfin il vous suffit de déployer votre application comme d'habitude, dans mon exemple, je le fais avec pax-runner et pax-web, en utilisant le port par défaut 8080.

Avec Eclipse

  1. Ouvrez la configuration de débogage pour votre projet
  2. Allez à l'onglet serveur et décochez « Exécuter serveur intégré »
  3. Accédez à l'onglet Attributs et ajoutez "-port 8080" (si 8080 est le port utilisé par votre conteneur Web). Je pense que cet argument sans le serveur intégré est seulement utilisé pour créer l'url que le mode de développement génère pour invoquer le navigateur (ou que elipse utilise pour générer une URL que vous pouvez copier et coller dans la barre d'adresse de votre navigateur).
  4. Déployez votre application.
  5. Vous pouvez y accéder à partir d'un navigateur avec l'extension GWT installé (et ne pas oublier d'ajouter ?gwt.codesvr=127.0.0.1:9997)
+0

Nice, fonctionne parfaitement :). La solution n'est pas si compliquée qu'elle semblait au début. Cependant, j'ai un problème avec l'option '-port 8080' dans Eclipse. Lorsque je l'ai défini, il n'est utilisé qu'une seule fois dans la première session de débogage. Lorsque je lance à nouveau le débogage, cette option est effacée et le débogage GWT commence en utilisant le port par défaut '8888' (tous les autres paramètres ne sont pas effacés). Cela semble être le problème du plugin GWT Eclipse. Avez-vous ce problème aussi? – Piotr

+0

Oui, c'était plus facile que je ne le pensais. J'ai commencé à essayer d'instancier le DevMode de l'Activator mais c'était un gâchis. Et à propos du problème de port, je l'ai eu la première fois que j'ai modifié les arguments, et je pensais qu'il a été corrigé après la deuxième fois, mais aujourd'hui il a disparu: S En tout cas je pense que ce paramètre n'est pas très important mode. –

0

J'ai eu le même problème dernièrement et malheureusement je n'ai trouvé aucune bonne solution. Par la suite, j'ai créé des simulacres d'implémentation de tous les services GWT que j'utilise dans mon code côté client. Lorsque j'ai besoin de déboguer du code côté client, je passe juste à ces services au lieu de services réels en utilisant OSGi en dessous. Ensuite, dans Eclipse, je peux lancer une application GWT en mode débogage. C'est loin d'être parfait et ça demande un peu de travail avec des mocks mais ça marche pour moi (du moins maintenant).

+0

Les mauvaises nouvelles alors :(, c'est exactement ce que je commençais à le faire, mais j'espère trouver un meilleure solution ... –

Questions connexes