JavaMail: Поддержание активности IMAPFolder.idle ()

Я делаю программу, которая должна отслеживать новые сообщения в учетной записи Gmail, и чтобы получать их как можно скорее, я использую функцию ожидания JavaMail. Вот фрагмент кода из потока, который я использую для вызова folder.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.");
}

Метод getFolder () в основном открывает соединение с сервером IMAP и открывает почтовый ящик.

Это работает какое-то время, но примерно через 10 минут перестает получать обновления (исключение не создается).

Я ищу предложения по поддержанию соединения. Нужен ли мне второй поток, единственная роль которого - засыпать и обновлять поток idle () каждые 10 минут, или есть более простой / лучший способ?

Заранее спасибо.

14
задан Johnco 14 April 2013 в 20:05
поделиться