2013-07-31 1 views
2

를 참조 내가 이메일을 보내 세션을 생성하는 데 사용하는 코드입니다. 나는 주소를 인증하고 성공적으로 이메일을 보내, 그리고javax의 인증은 여기에 동일한 이메일 주소

1. emailFromAddress: [email protected] 
2. emailFromAddress: [email protected] pass: ***** 

나는 = "[email protected]"다른 emailFromAddress에서 보내려고 수 있습니다 -> 실패한 이번에는 로그 인쇄물로 전송하고 :

1. emailFromAddress: [email protected] --> WHICH IS CORRECT 
2. emailFromAddress: [email protected] pass: ***** --> WHICH STILL REFER TO THE OLD ACCOUNT 

세션 인증 자의 캐시가 있습니까?

답변

0

캐시의 종류는입니다. 귀하의 예에서는 Authenticator을 한 번 작성하고 기본 세션에서 설정했습니다. 그 객체는 영원히 (또는 적어도 당신의 JVM이 끝날 때까지) 살아 있기 때문에 모든 호출에서 같은 방식으로 동작합니다.

아마도 Authenticator에서 getDefaultUserName()을 사용하여 사용자 이름을 제공 할 수 있습니까?

또 다른 옵션은 보내는 모든 메일에 새로운 Authenticator을 다시 구성하는 것입니다. 따라서 모든 시도에서 올바른 사용자 이름을 제공 할 수 있습니다. 자바 문서로

+1

마치 Authenticator가 업데이트되었는지에 관계없이 getDefaultInstance()가 설정되면 defaultSession을 반환합니다. 그래서 getInstance()로 변경하고 문제를 해결했습니다. – baizen

0

:

getDefaultInstance 기본 세션 객체를 가져옵니다. 기본값이 아직 설정되지 않은 경우 새 Session 개체가 만들어져 기본값으로 설치됩니다.

getInstance 새 세션 개체를 가져옵니다. 따라서 이미 존재하는지 여부에 관계없이 새 세션 개체가 만들어집니다.

그래서 트릭이 getInstance()으로 변경됩니다.