【问题标题】:JavaMail : FolderClosedException coming frequentlyJavaMail:FolderClosedException 频繁出现
【发布时间】:2013-02-14 07:17:25
【问题描述】:

我正在使用 java 邮件与 gmail 连接,并且我正在为所有操作保留一个商店。 (存储设置为静态。)。 并且 IMAPFolder 实例附加了 imap 侦听器。因此文件夹始终保持打开状态。 (任何时候都不会调用文件夹关闭)但是在几分钟后运行时,我得到了 FolderClosedException。出现异常后,虽然可以重新打开文件夹,但无法再次发出 idle() 命令,这将导致 NullPointerException。

保持文件夹始终打开有什么问题吗?

提前致谢。

================================================ =====================

[编辑] 在这里,我粘贴了我正在使用的 POC 的实际代码。 NullPointerException 在我重新连接商店后检查 .isConnected() 时出现。下面是 Thread 的 run 方法,它向 store 发送 idle() 命令。

public void run() {
        while (true) {
            try {
                System.out.println("Checking connectivity...");

                if (store.isConnected()) {
                    store.idle();
                    System.out.println("IDLE send...");
                } else {
                    Thread.sleep(5000);
                    System.out.println("Tring to connect...");

                    //Trying to reconnect to the store.
                    store.connect();
                    System.out.println("Previous store connected again");
                }
            } catch (InterruptedException ex) {
                System.out.println("InterruptedException...");
            } catch (StoreClosedException ex) {
                System.out.println("StoreClosedException...");
            } catch (MessagingException ex) {
                System.out.println("MessagingException...");
            }
        }
    }

这是堆栈跟踪:

Exception in thread "Thread-1" java.lang.NullPointerException
at com.sun.mail.imap.IMAPStore.waitIfIdle(IMAPStore.java:1881)
at com.sun.mail.imap.IMAPStore.getStoreProtocol(IMAPStore.java:946)
at com.sun.mail.imap.IMAPStore.isConnected(IMAPStore.java:1347)
at pocworks.POCWorks1$IDLEThread.run(POCWorks1.java:125)

【问题讨论】:

  • 有人知道吗?非常感谢任何建议,因为这是非常紧急的。谢谢。

标签: jakarta-mail


【解决方案1】:

通常,邮件服务器不希望您在不使用它们时保持连接打开。典型的 IMAP 服务器会在未使用的连接超时前给您 30 分钟; Gmail 可能更具侵略性。

【讨论】:

  • 非常感谢香农。当发生这种超时时,邮件客户端应该怎么做?我试图重新连接同一个商店,但是再次发出 idle() 命令时它会抛出 NullPointException。并且所有 IMAPFolders 都会反复抛出 FolderClosedException,因为它们的侦听器正在运行。
    我是否必须重新创建一个新商店并从该商店从头开始获取 IMAPFolders?
  • 您可以重新连接应用商店,但您还需要重新打开文件夹。你能告诉我你得到的 NullPointerException 的堆栈跟踪吗?
  • 感谢比尔的建议。我已经使用代码 sn-p 和堆栈跟踪编辑了原始帖子。
  • 感谢堆栈跟踪。如果在等待 IDLE 响应时在错误的时间断开连接,似乎存在导致 NullPointerException 的错误。
  • 在我们在下一个版本中得到修复之前,您能否提出解决方法?
猜你喜欢
  • 1970-01-01
  • 2021-01-28
  • 1970-01-01
  • 2014-07-17
  • 2016-09-04
  • 1970-01-01
  • 2022-06-15
  • 1970-01-01
  • 2016-01-16
相关资源
最近更新 更多