【问题标题】:Javamail: Multiple Threads Opening a Folder in Read Write Mode is BlockedJavamail:以读写模式打开文件夹的多个线程被阻止
【发布时间】:2014-08-03 01:26:20
【问题描述】:

我正在编写一个多线程应用程序来处理传入的电子邮件。我有一个线程读取收件箱消息,然后将它们发送到处理消息的其他线程(每条消息的线程)。我正在使用所有当前更新连接到 Exchange 2013 (v.15)。

商店连接正在关闭,当我尝试重新打开它时,我收到一个异常,指出“无法创建新的商店连接”。这发生在 folder.exists() 调用上。该文件夹肯定存在。

我以 R/W 模式打开,因为在处理邮件时我必须将它们移动到其他文件夹。

应用程序运行了一段时间,然后开始发生这种情况。我们提升了在 Exchange 中可以找到的所有设置,以允许尽可能多的连接。我想知道 Exchange 是否只允许 1 个 Read_Write 连接到文件夹?

我们正在做 IMAP (SSL)

注意:我们不是垃圾邮件发送者。

例外:

javax.mail.StoreClosedException: failed to create new store connection
at com.sun.mail.imap.IMAPFolder.throwClosedException(IMAPFolder.java:3368)
at com.sun.mail.imap.IMAPFolder.doCommand(IMAPFolder.java:3497)
at com.sun.mail.imap.IMAPFolder.exists(IMAPFolder.java:560)
at com.myco.myapp.MessageHandler.getFolder(MessageHandler.java:68)

【问题讨论】:

    标签: jakarta-mail


    【解决方案1】:

    打开JavaMail session debugging。调试输出可能会提供更多关于 JavaMail 为何无法连接到服务器或服务器拒绝登录尝试的线索。

    您是否正在运行任何可能会干扰连接尝试的防火墙或防病毒软件?

    编写一个程序来测试 Exchange 是否允许多个读/写连接到同一个文件夹会很容易。

    【讨论】:

    • 我当然可以打开协议调试,我会尝试的。我可以编写一个应用程序来测试连接,但我认为问题在于 Exchange 进行资源管理和限制。该应用程序运行了一段时间,然后连接被拒绝。同时我会得到调试输出。
    • 是的,可能是 Exchange 端的问题,您无法从客户端控制。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-27
    • 1970-01-01
    相关资源
    最近更新 更多