Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当一个";“插座已关闭”;收到了吗?_Java_Sockets_Jakarta Mail - Fatal编程技术网

Java 当一个";“插座已关闭”;收到了吗?

Java 当一个";“插座已关闭”;收到了吗?,java,sockets,jakarta-mail,Java,Sockets,Jakarta Mail,我有一个简单的服务器,它可以侦听来自多个文件夹的传入电子邮件,例如,在这个场景中,它正在侦听来自2个文件夹的邮件。 我有两个线程x文件夹,它们保持连接的活动状态 我遇到过这样一种情况:只有一个文件夹接收到“套接字已关闭”,而另一个文件夹处于活动状态,如果连接(与存储?)已关闭,那么另一个文件夹也会引发异常 跟踪: "javax.mail.MessagingException: * BYE JavaMail Exception: java.net.SocketException: Socket i

我有一个简单的服务器,它可以侦听来自多个文件夹的传入电子邮件,例如,在这个场景中,它正在侦听来自2个文件夹的邮件。 我有两个线程x文件夹,它们保持连接的活动状态

我遇到过这样一种情况:只有一个文件夹接收到“套接字已关闭”,而另一个文件夹处于活动状态,如果连接(与存储?)已关闭,那么另一个文件夹也会引发异常

跟踪:

"javax.mail.MessagingException: * BYE JavaMail Exception: java.net.SocketException: Socket is closed
        at com.sun.mail.imap.IMAPFolder.open(IMAPFolder.java:1064)
        at com.sun.mail.imap.IMAPFolder.open(IMAPFolder.java:973)
        at ....MyClass.open(MyClass.java:112)
        at ....MyClass$MyClassSynchThread.run(MyClass.java:668)
        at java.lang.Thread.run(Thread.java:748)
Caused by: com.sun.mail.iap.ConnectionException: * BYE JavaMail Exception: java.net.SocketException: Socket is closed
        at com.sun.mail.iap.Protocol.handleResult(Protocol.java:401)
        at com.sun.mail.imap.protocol.IMAPProtocol.select(IMAPProtocol.java:1184)
        at com.sun.mail.imap.IMAPFolder.open(IMAPFolder.java:1030)
        ... 4 common frames omitted

谢谢大家

每个打开的文件夹都有一个单独的连接。当你收到异常时,关闭文件夹并重新打开它。你是说一个打开的调用是不够的吗?在那之前我应该叫close吗?正如您在日志中看到的,我正在打开文件夹,但在上面的日志中它不可见,但我正在打开它,因为我刚刚收到一个FolderClosedException…所以我真的不明白为什么要在这种状态下关闭文件夹。比尔,请你解释清楚好吗?谢谢你一直以来的密切关注可能没有必要。我认为它只决定了当您对已关闭的文件夹调用另一个方法时,是否会得到FolderClosedException或IllegalStateException;前者发生在服务器关闭文件夹时,后者发生在客户端关闭文件夹时。总之,我应该如何恢复连接?如果close不是必需的,而open调用抛出SocketException,那么剩下的操作是什么?我想关闭并重新打开存储,但这样我会使绑定到同一存储的其他“活动”文件夹无效,是真的吗?THX您应该关闭并重新打开失败的文件夹。如果关闭存储,它将关闭所有打开的文件夹。每个打开的文件夹都有一个单独的连接。当你收到异常时,关闭文件夹并重新打开它。你是说一个打开的调用是不够的吗?在那之前我应该叫close吗?正如您在日志中看到的,我正在打开文件夹,但在上面的日志中它不可见,但我正在打开它,因为我刚刚收到一个FolderClosedException…所以我真的不明白为什么要在这种状态下关闭文件夹。比尔,请你解释清楚好吗?谢谢你一直以来的密切关注可能没有必要。我认为它只决定了当您对已关闭的文件夹调用另一个方法时,是否会得到FolderClosedException或IllegalStateException;前者发生在服务器关闭文件夹时,后者发生在客户端关闭文件夹时。总之,我应该如何恢复连接?如果close不是必需的,而open调用抛出SocketException,那么剩下的操作是什么?我想关闭并重新打开存储,但这样我会使绑定到同一存储的其他“活动”文件夹无效,是真的吗?THX您应该关闭并重新打开失败的文件夹。如果关闭存储,它将关闭所有打开的文件夹。