Sprawdzam, czy Javamail jest bezpieczny dla wątków, w szczególności w sytuacji, gdy wiele sesji odpowiada różnym użytkownikom, kilku serwerom SMTP i wykorzystaniu tworzenia komunikatów MIME i zastosowaniu metody transport.sendMessage
. Wiem, że Javamail jest zorientowany na używanie komputera, co sprawia, że podejrzewam, że nie został zbudowany z myślą o wątkach i zastanawiam się, czy ktoś ma takie doświadczenie.Threadsafety w Javamail
Odpowiedz
Co prawda reguły bezpieczeństwa nici dla JavaMail nie są dobrze udokumentowane, ale mam nadzieję, że w większości odpowiadają one oczekiwaniom.
Wiele wątków może korzystać z sesji.
Ponieważ Transportu reprezentuje połączenie z serwerem pocztowym, a tylko jeden wątek może korzystać z połączenia na raz, transport będzie synchronizować dostęp z wielu wątków w celu utrzymania bezpieczeństwa wątku, ale będziesz naprawdę chcą tylko korzystać to z jednego wątku.
Podobnie, Store może być używany przez wiele wątków, ale dostęp do podstawowego połączenia zostanie zsynchronizowany i pojedynczy wątek.
Wiadomość powinna być modyfikowana tylko przez jeden wątek na raz, ale wiele wątków powinno być w stanie bezpiecznie odczytać wiadomość (chociaż nie jest jasne, dlaczego chciałbyś to zrobić).
nadzieję, że pomoże ...
W JavaMail dyspozytorskie wątki nie wydaje się limit czasu, gdy serwer nie odpowiada w czasie. to prowadzi do zablokowania wszystkich dostępnych wątków.
Przetestowano to zachowanie dla obu 1.4.3 & 1.4.5.
- 1. JavaMail - javax.mail.MessagingException
- 2. Błąd JavaMail BaseEncode64
- 3. Wysyłanie javamail przy użyciu Office365
- 4. JavaMail sprawdź treść wiadomości gmail IMAP
- 5. JavaMail API, Gmail-Auth i setFrom
- 6. Klient IMAP w Javie: JavaMail API lub Apache Commons Net?
- 7. Jak używać domyślnej sesji Javamail w Websphere z GMailem
- 8. Znaki JavaMail i inne niż ASCII w nazwach plików
- 9. Przechowywanie danych w tabeli MySQL przez Javamail nie powiodło się
- 10. JavaMail: zerowanie wskaźnika w BODYSTRUCTURE.parseParameters. Czy to błąd?
- 11. JavaMail: jak zdobyć nowe wiadomości porównując ze stempli czasowych
- 12. JavaMail - Nazwa pliku załącznika nie wyświetla poprawnie znaków UTF-8
- 13. JavaMail API do iMail - java.net.SocketException: Odmowa uprawnień: połącz
- 14. JavaMail nie wysyła wiadomości SMTP za pośrednictwem postfiksu
- 15. Przeczytaj plik tekstowy wiadomości e-mail przekonwertuj na Javamail MimeMessage
- 16. Dodaj apache POI WorkBook jako załącznik do MimeMessage Javamail bez pisania w systemie plików
- 17. Wysyłanie wiadomości e-mail w systemie Android przy użyciu JavaMail API
- 18. javamail: Ustawianie niestandardowych flag w wiadomościach imap i wyszukiwanie wiadomości e-mail z niestandardowymi flagami
- 19. Wyślij e-mail w Android przy użyciu JavaMail API z smtp ale bez SSL
- 20. Tworzenie wieloczęściowej wiadomości w formacie MIME Szablon wolnomatnika za pośrednictwem Spring 3 JavaMail
- 21. Sprawdzone metody - Wysyłanie wiadomości e-mail wieloskładnikowych javamail mime - i Gmail
- 22. Wysyłanie wiadomości e-mail z załącznikiem za pomocą interfejsu API javamail
- 23. Odzyskiwanie wszystkie nieprzeczytane wiadomości e-mail przy użyciu JavaMail z protokołem POP3
- 24. Jak ustawić ścieżkę zwrotną na adres e-mail inny niż nadawca przy użyciu JavaMail?
- 25. Jak uzyskać listę dostępnych folderów na koncie pocztowym za pomocą JavaMail
- 26. Uzyskiwanie dostępu do wiadomości e-mail z Gmaila za pomocą protokołu IMAP (javamail API)
- 27. Nie można połączyć się z wyjątkiem hosta SMTP podczas wysyłania poczty za pośrednictwem interfejsu JavaMail API
- 28. Nie można wysyłać poczty za pośrednictwem protokołu SSL lub TLS za pomocą protokołu SMTP przy użyciu Javamail
- 29. Jak mogę przerwać IDLE w IMAP?
- 30. java.lang.NoClassDefFoundError: javax/mail/MessagingException
Nauczyłeś się tego z javadoc, źródeł, z doświadczenia? – ewernli
Napisałem wiele kodu i utrzymuję je wszystkie. –
Kudos! Ponieważ nie było żadnych odniesień potwierdzających twoje wyjaśnienia, zastanawiałem się, jak możesz być tak asertywny. Teraz rozumiem;) Oczywiście, +1! – ewernli