2014-06-07 2 views
3

Gmail (테스트 용)을 사용하여 Wildfly 8.1에 간단한 메일 서비스를 설정하려고합니다.
어떤 이유에서든 메일을 전송할 때마다 Wildfly는 outbound-socket 대신 localhost에 연결하려고 시도합니다!Wildfly Mail-Session은 항상 localhost를 사용합니다.

오류 :

13:22:34,164 ERROR [stderr] (default task-22) com.sun.mail.util.MailConnectException: Couldn't connect to host, port: localhost, 25; timeout -1; 
13:22:34,164 ERROR [stderr] (default task-22) nested exception is: 
13:22:34,165 ERROR [stderr] (default task-22) java.net.ConnectException: Connection refused: connect 
13:22:34,165 ERROR [stderr] (default task-22) at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1984) 

standalone.xml 그런

... 
<mail-session name="java:jboss/mail/gmail" debug="true" jndi-name="java:jboss/mail/gmail"> 
    <smtp-server outbound-socket-binding-ref="mail-smtp" ssl="true" username="[email protected]" password="pass"/> 
</mail-session> 
... 
<outbound-socket-binding name="mail-smtp"> 
    <remote-destination host="smtp.gmail.com" port="465"/> 
</outbound-socket-binding> 

난 그냥 시도하고 메일을 보내 : 나는 시도했다

@Stateless 
public class SendMail { 

@Resource(mappedName = "java:jboss/mail/gmail") 
private Session mailSession; 

public String send() { 
    MimeMessage m = new MimeMessage(mailSession); 
    try { 
     m.setRecipients(Message.RecipientType.TO, "[email protected]"); 
     m.setContent("Test from Wildfly","text/plain"); 
     Transport.send(m);//throws exception 
    } catch (MessagingException e) { 
     e.printStackTrace(); 
    } 
... 

을 "name"& "lookup" @Resource 주석에 있지만 심지어 outbound-socket도없는 localhost에 연결하려고합니다.

무엇이 누락 되었습니까?

답변

0

잘못된 포트를 사용 중입니다. 포트 번호 465 또는 587이어야합니다. 오류 메시지에서 가져온 포트 25를 사용하십시오.

1

동일한 문제가 발생했는데 새로운 Java Mail 설정이 적용된 후 WildFly가 다시로드 되기만하면됩니다. WildFly를 다시 시작하면 새 설정을 사용해야합니다.

0

그냥 같은 문제가 생겼기 때문에 경험을 추가하십시오. 다시 시작하는 이유는 세션 속성이 null이기 때문입니다. 즉석에서 수정하는 경우 독립 실행 형 서버를 다시 시작해야합니다. .xml 구성 파일.

필자의 경우, final 속성을 사용하는 테스트 클래스를 사용했는데 리소스 삽입을 쓸모 없게 만들었고 제거만으로 해결되었습니다.

지금까지 Stateless EJB를 사용할 때 이메일을 보내는 동안 비동기 표기법을 사용하는 것이 좋습니다. :)