Java Mail: Session
Ci-dessous le code utilisé pour se connecter et effectuer des opérations sur un Dossier IMAP.
Donc ma question est au sujet de la javax.mail.Session
qui dans ce cas serait de recréer à chaque seconde (en fonction du temps de sommeil et le temps d'exécution du checkInbox()).
Je suis sûr que ce n'est pas une bonne solution, surtout l'interrogation sur l'IMAP est un peu stupide, mais je ne pouvais pas la IMAP listener
en cours d'exécution.
De recréer la Session n'est pas tout, pourrait être une meilleure solution, mais comment savoir quand un session is closed
ou puis-je fermer sur le but? Mais il n'y a rien comme Session.close()
ou est la Session de NULL? Ou est-il un délai d'expiration d'une Session...
Source:
final String port = "993";
Properties prop = new Properties();
//I assume there is some redundancy here but this didn't cause any problems so far
prop.setProperty("mail.imaps.starttls.enable", "true");
prop.setProperty("mail.imaps.port", port);
/** This part can be removed
* prop.setProperty("mail.imaps.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
* prop.setProperty("mail.imaps.socketFactory.port", port);
* prop.setProperty("mail.imaps.socketFactory.fallback", "false");
*/
prop.setProperty("mail.imap.ssl.enable", "true");
prop.setProperty("mail.debug", "false");
//Create a session before you loop since the configuration doesn't change
Session session = Session.getInstance(prop);
//Nearly loop forever in Prod
while(true){
//Check the INBOX and do some other stuff
Store store = session.getStore("imaps");
store.connect(host, user, pw);
//... the operations on the session ...
store.close();
//Sleep a bit try & catch removed
Thread.sleep(1000);
}
Dans l'ensemble je dois dire que c'est vraiment dur de trouver de bons exemples et de la documentation pour javax.mail (en plus de l' API et la FAQ)
OriginalL'auteur Kuchi | 2013-07-25
Vous devez vous connecter pour publier un commentaire.
La Session gère les informations de configuration; il n'y a pas besoin de la fermer. Tant que votre configuration ne change pas, vous pouvez créer la Session une fois au début et juste continuer à l'utiliser.
Connexions, d'autre part, sont coûteux et doivent être gérés avec soin par l'application. Une connexion est utilisée pour le Magasin et ouvert pour chaque Dossier. Une connexion peut être fermé à tout moment, par le serveur ou en raison d'une défaillance du réseau. Si une connexion n'est pas activement utilisé, vous devriez la fermer.
Avez-vous trouvé le JavaMail spec et les exemples d'applications sur le JavaMail page du projet? Ils vous aideront avec beaucoup de questions simples, mais la gestion de la connexion est une version plus avancée du problème.
Oh, et vous pouvez supprimer tout ce qui socket usine de trucs et rendre votre application plus simple.
Je suppose que dans l' /javamail-samples/monitorint.java j'ai trouvé ce que je cherche. Me semble que je n'ai pas assez attention lorsque je suis passé par ce la dernière fois.
Oui, cela devrait vous obtenir a commencé.
J'ai été de ne pas fermer le magasin soit découvert la manière dure et obtenu un message d'erreur "nombre maximum de connexions..." de la part du fournisseur. Où 20 est le maximum.
OriginalL'auteur Bill Shannon