2010-04-29 9 views
3

J'utilise NetBeans IDE pour développer une application Java Web Start qui lancera à partir du Web, puis utilisez l'Assemblée parlementaire paritaire EclipseLink pour accéder à une base de données MySQL à distance. J'utilise Swing Application Framework pour gérer le cycle de vie de mon application. Lorsque je lance l'application à partir de Netbeans, il faut environ 7 secondes pour charger mon application, mais lorsque j'utilise l'EDI NetBeans pour créer un paquet de distribution Web Start (avec les fichiers JAR et JNLP), il faut environ 60 secondes pour lancement. De plus, la fenêtre de la barre de progression "vérifier l'application"/"télécharger l'application" semble fonctionner chaque fois que je lance l'application même si une copie de celle-ci a déjà été mise en cache. Du point de vue des utilisateurs, on voit d'abord mon écran de démarrage pendant 1 à 2 secondes, puis la fenêtre de progression "vérifier l'application"/"télécharger l'application" pendant 5 à 20 secondes puis rien pendant 40 secondes avant l'application se lance.Démarrage lent pour Java Web Start application

Le code de l'application est écrit de telle sorte qu'il devrait se montrer AVANT que le JPA commence à charger l'unité de persistance (donc je doute que c'est le problème), mais je pensais le mentionner au cas où.


Mise à jour: Méthode createEntityManagerFactory lent avec Web Start

Après avoir examiné cette question plus loin, j'ai trouvé que la méthode createEntityManagerFactory - qui est nécessaire pour EclipseLink de se connecter à MySQL - prend aboutn 5 secondes exécuter quand je cours l'application de Netbeans ou quand je me connecte à distance à mon serveur pour lancer le JNLP là, mais quand je cours l'application par l'intermédiaire du Web la même ligne prend 35 secondes (retardant énormément le démarrage). Fait intéressant, cette fois-ci devient encore pire que la vitesse de ma connexion Internet s'aggrave. Voici une copie du fichier JNLP que j'utilise.

Est-ce que quelqu'un a une idée de ce qui peut causer un tel retard?

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 

MyApp Mon App fournisseur My App Description de MyApp

+1

Quels JDK et JRE utilisez-vous? certains anciens 1.6 JRE ne sont pas en cache ... – Tedil

+0

Ma solution habituelle pour voir où le problème est quand il est prononcé est d'utiliser 'jstack' ou similaire, et de vérifier les traces de la pile. Ce n'est peut-être pas un problème de processeur, peut-être qu'il essaie de vérifier un certificat avec OCSP, ce qui dépend des performances du serveur OCSP (qui est souvent nul). –

+0

Tedil: J'utilise JDK 1.6.0_11 et JRE 1.6.0_18-b07. Tom Hawtin: Je doute aussi que ce soit un problème de CPU car l'application fonctionne très bien lorsqu'elle est lancée à partir de NetBeans. Je vais regarder dans la possibilité OCSP. Merci. – igillespie

Répondre

1

Tout d'abord, dans le panneau de configuration Java activer la journalisation ALL. Cela vous permettra de voir exactement ce que Java WebStart est en train de faire (mais beaucoup de choses n'ont pas beaucoup de sens si vous n'avez pas accès à la source WebStart).

Mon devinez de votre description est que vous avez un ou plusieurs serveurs DNS inaccessibles dans votre configuration réseau ET que vous souhaitez accéder à une ressource réseau qui n'est pas disponible.

6

Je ne suis pas sûr si vous avez déjà résolu ceci. Mais, j'ai répété votre problème et l'ai réparé. Tout ce que j'avais à faire était de passer d'Eclipselink à Toplink. C'est simple. Les démarrages sont passés de 1 à 2 minutes à 5 secondes.J'ai même tracé l'application et trouvé la même pendaison pendant l'init de eclipselink.

Espérons que ça aide.