JavaMail: Garder IMAPFolder.idle() vivant

Je fais un programme qui a besoin de surveiller un compte Gmail pour les nouveaux messages, et afin de les rendre le plus vite possible, je suis en utilisant JavaMail de veille de fonctionnalité. Voici un extrait de code dans le thread, je suis à l'aide de l'appel de dossier.idle():

//Run method that waits for idle input. If an exception occurs, end the thread's life.
public void run() {

    IMAPFolder folder = null;

            try {
                folder = getFolder();
                while(true)
                {
                  //If connection has been lost, attempt to restore it
                  if (!folder.isOpen())
                      folder = getFolder();
                  //Wait until something happens in inbox
                  folder.idle(true);
                  //Notify controller of event
                  cont.inboxEventOccured();
                }
            }
            catch (Exception ex) {
                ex.printStackTrace();
            }
             System.out.println("MailIdleWaiter thread ending.");
}

La méthode getFolder() ouvre essentiellement la connexion au serveur IMAP et ouvre la boîte de réception.

Cela marche un temps, mais au bout de 10 minutes il s'arrête obtenir des mises à jour (aucune exception n'est levée).

Je suis à la recherche de suggestions de garder la connexion. Ai-je besoin d'un deuxième thread dont le seul rôle est de dormir et de renouveler le régime de ralenti() thread toutes les 10 minutes ou est-il un moyen plus facile/mieux?

Merci d'avance.

J'ai l'intention de faire de même. Avez-vous été finalement en mesure de résoudre le problème? Actuellement, je suis de l'interrogation du dossier par dossier.ouvrir/dossier.fermer toutes les 15 secondes, mais INACTIF serait mieux, bien sûr. J'ai l'intention de l'utiliser dans un serveur d'application de l'environnement.
Désolé pour ne pas s'apercevoir de votre commentaire plus tôt. J'ai fini par abandonner le projet, donc je n'ai jamais eu plus proche d'une solution. Mais maintenant que ce fil a une réponse, peut-être que ce sera le travail... même si c'est basé sur l'interrogation et ne pas inactif.
Vous avez à la fois le sondage et être inactif pour le faire correctement. RALENTI doit être arrêté et renouvelé chaque demi-heure, selon la spécification et plus souvent si une fracture de la NATbox est dans la manière. Le droit de l'intervalle est... eh bien, peut-être qu'il n'est pas une Valeur Correcte.
Toute les bonnes solutions? J'ai un problème similaire, avec moi-même. Je veux attendre les bras croisés jusqu'à ce qu'un nouveau message est inséré dans le dossier boîte de réception, tout en gardant la connexion. Je ne veux pas utiliser d'interrogation.

OriginalL'auteur Anders | 2010-11-11