2010-10-11 4 views
2

Lorsque je crée une simple application "Bonjour tout le monde" pour Vaadin, que je la déploie sur le serveur et que je tape l'URL de l'application dans le navigateur, je dois attendre environ 5-10 secondes avant que l'application apparaisse. Les prochaines étapes sont rapides, mais quand je redéploie ou échange à chaud des classes, je dois attendre encore. Lorsque je l'ajoute au démarrage de la base de données, au démarrage du serveur, etc., cela prend trop de temps. Y at-il un moyen d'éliminer cette lenteur de démarrage de Vaadin? C'est important, car chaque lenteur supplémentaire rend le cycle de programmation modifier + run + test plus frustrant - tout le code ne peut pas être testé unitairement, la seule façon de tester certaines choses est de modifier manuellement + exécuter + tester.Comment améliorer la vitesse de démarrage de Vaadin en mode débogage?

Un problème similaire existe avec le mode de débogage GWT. Parce que Vaadin est basé sur GWT, peut-être la raison de cette lenteur n'est pas dans Vaadin mais dans GWT?

Mon environnement: IntelliJ 9 + Tomcat 6 + Windows 7 64 bits + Fast Core 2 Duo

Répondre

2

Si le démarrage de l'application Vaadin est lent: Vérifiez que votre méthode Application.init() ne fasse rien de trop lourd - connexions de base de données, chargement de beaucoup de données, etc. Vous pouvez forcer le redémarrage de cette session dans Vaadin avec Paramètre d'URL? RestartApplication

Si le déploiement à chaud est lent même si l'application n'est pas redémarrée (l'état de l'interface utilisateur reste): Cela a quelque chose à voir avec la partie côté client (GWT) de Vaadin. Peut-être que la mise en cache est en quelque sorte complètement ignorée. L'optimisation de Widgetset pourrait aider.

+0

Dans les deux cas, le redémarrage est lent. C'est lent même avec de simples applications 'hello world', sans code dans Application.init() – iirekm

1

Le problème est causé par toutes les classes Java en cours de chargement pour la première fois, les appels suivants peuvent utiliser les classes mises en cache .

Cependant 5-10 secondes est, à mon humble avis, vraiment pas si mal, j'ai eu beaucoup pire.

+0

5-10 secondes est dans une petite application avec seulement environ 30 classes de Vaadin. Je suppose que ce ne sera que plus lent lorsque la base de code se développera. – iirekm

2

Vaadin passent la majeure partie de ce temps ici com.vaadin.terminal.gwt.server.AbstractApplicationServlet # serveStaticResourcesInVAADIN (contenant en fait servlet, pas lui-même Vaadin)

Je pense qu'il est parce que vaadin.jar est trop grand. Donc, vous pouvez simplement extraire VAADIN dir de vaadin.jar à votre webRoot et le temps de démarrage de l'application va diminuer.

Autre très bon (mais payant) solution est http://zeroturnaround.com/jrebel

Questions connexes