Unterhalb des Codes, der zum Herstellen und Ausführen von Vorgängen in einem IMAP-Ordner verwendet wird.
Also meine Frage ist über die javax.mail.Session
, die in diesem Fall jede Sekunde neu erstellt würde (abhängig von der Ruhezeit und Laufzeit von checkInbox ()).
Ich bin mir sicher, dass dies keine gute Lösung ist, vor allem das Umfragen auf IMAP ist etwas blöd, aber ich konnte das IMAP listener
nicht ausführen.
Das erneute Erstellen der Sitzung könnte nicht immer eine bessere Lösung sein, aber woher weiß ich, wann eine session is closed
oder kann ich sie absichtlich schließen? Aber es gibt nichts wie Session.close()
oder ist die Session als NULL? Oder gibt es einen definierten Timeout für eine Sitzung ...
Quelle :
Alles in allem muss ich sagen, dass es wirklich schwer ist, gute Beispiele und Dokumentation für javax.mail zu finden (neben der API) und die FAQ )
Die Sitzung verwaltet nur Konfigurationsinformationen; Es ist nicht nötig, es zu schließen. Solange sich Ihre Konfiguration nicht ändert, können Sie die Sitzung einmal am Anfang erstellen und nur weiterverwenden.
Verbindungen hingegen sind teuer und müssen sorgfältig von der Anwendung verwaltet werden. Eine Verbindung wird für den Speicher und für jeden geöffneten Ordner verwendet. Eine Verbindung kann jederzeit vom Server oder aufgrund eines Netzwerkfehlers geschlossen werden. Wenn eine Verbindung nicht aktiv verwendet wird, sollten Sie sie schließen.
Haben Sie die JavaMail-Spezifikation und die Beispielanwendungen auf der JavaMail-Projektseite gefunden? Sie werden bei vielen einfachen Problemen helfen, aber das Verbindungsmanagement ist ein fortgeschrittenes Problem.
Oh, und Sie können alle Socket Factory-Sachen entfernen und machen Ihre Anwendung einfacher.