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
Quels JDK et JRE utilisez-vous? certains anciens 1.6 JRE ne sont pas en cache ... – Tedil
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). –
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