2016-03-21 18 views
0

私はしばらくの間、wildflyで作業しています。メールサブシステムを動作させることはできません。私は、Webコンソール、CLIを通じてかどうかまでそれを設定する方法を多くのチュートリアルを見ているか、直接standalone.xmlに私は私の設定が正しいことをかなり確信している:Wildfly 9.1 smtp mail substem - ホスト、ポート:localhost、25に接続できませんでした。タイムアウト-1;

<subsystem xmlns="urn:jboss:domain:mail:2.0"> 
     <mail-session debug="true" name="Gmail" jndi-name="java:jboss/mail/Gmail" from="MAILFROM"> 
      <smtp-server outbound-socket-binding-ref="mail-smtp" ssl="true" username="MAILFROM" password="PASSWORD"/> 
     </mail-session> 
</subsystem> 
<outbound-socket-binding name="mail-smtp"> 
     <remote-destination host="smtp.gmail.com" port="465"/> 
</outbound-socket-binding> 

そして、私のJavaファイル内:

@Resource(mappedName = "java:jboss/mail/Gmail") 
private javax.mail.Session gmailSession; 

public void sendEmail(String to,String subject,String msg){ 
Message message = new MimeMessage(gmailSession); 
message.setFrom(newInternetAddress("MAILFROM")); 
message.setRecipients(Message.RecipientType.TO, 
InternetAddress.parse(to)); 
message.setSubject(subject); 
message.setContent(msg,"text/html"); 
Transport.send(message);} 

そして私が手:

java.net.ConnectException: Connection refused: connect 
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:2054) 
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:697) 
at javax.mail.Service.connect(Service.java:364) 
at javax.mail.Service.connect(Service.java:245) 
at javax.mail.Service.connect(Service.java:194) 
at javax.mail.Transport.send0(Transport.java:253) 
at javax.mail.Transport.send(Transport.java:124) 
at com.liferoles.controller.UserManager.sendEmail(UserManager.java:487) 
at com.liferoles.controller.UserManager.sendResetLink(UserManager.java:520) 
at com.liferoles.rest.RestAuth.sendResetLink(RestAuth.java:82) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:137) 
at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMethodInvoker.java:296) 
at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:250) 
at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:237) 
at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:356) 
at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:179) 
at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:220) 
at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:56) 
at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:51) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) 
at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:86) 
at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62) 
at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) 
at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78) 
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) 
at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131) 
at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57) 
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) 
at io.undertow.security.handlers.AuthenticationConstraintHandler.handleRequest(AuthenticationConstraintHandler.java:51) 
at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46) 
at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64) 
at io.undertow.servlet.handlers.security.ServletSecurityConstraintHandler.handleRequest(ServletSecurityConstraintHandler.java:56) 
at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:58) 
at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:72) 
at io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50) 
at io.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:76) 
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) 
at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61) 
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) 
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) 
at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:282) 
at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:261) 
at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:80) 
at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:172) 
at io.undertow.server.Connectors.executeRootHandler(Connectors.java:199) 
at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:774) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
at java.lang.Thread.run(Unknown Source) 
Caused by: java.net.ConnectException: Connection refused: connect 
at java.net.TwoStacksPlainSocketImpl.socketConnect(Native Method) 
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source) 
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source) 
at java.net.AbstractPlainSocketImpl.connect(Unknown Source) 
at java.net.PlainSocketImpl.connect(Unknown Source) 
at java.net.SocksSocketImpl.connect(Unknown Source) 
at java.net.Socket.connect(Unknown Source) 
at java.net.Socket.connect(Unknown Source) 
at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:329) 
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:236) 
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:2020) 
... 52 more 

奇妙なことは、このように直接のjavax.mail APIを使用しているとき、それは同じ性質で動作ということです。

public void sendEmail(String to,String subject,String msg){ 
     Properties properties = System.getProperties(); 
     String user = "MAILFROM"; 
     String passwd = "PASSWORD"; 
     properties.setProperty("mail.smtp.auth", "true"); 
     properties.setProperty("mail.smtp.starttls.enable", "true"); 
     properties.setProperty("mail.smtp.host", "smtp.gmail.com"); 
     properties.setProperty("mail.smtp.port", "587"); 
     javax.mail.Session gmailSession = javax.mail.Session.getInstance(properties, 
        new javax.mail.Authenticator() { 
        protected PasswordAuthentication getPasswordAuthentication() { 
         return new PasswordAuthentication(user, passwd); 
        } 
        }); 
     Message message = new MimeMessage(gmailSession); 
     message.setFrom(new InternetAddress("MAILFROM")); 
     message.setRecipients(Message.RecipientType.TO, 
     InternetAddress.parse(to)); 
     message.setSubject(subject); 
     message.setContent(msg,"text/html"); 
     Transport.send(message); 

私は2つの理由から、この問題を解決しようとしている:私はstandalone.xmlではなく、私のJavaクラスで私の資格情報を持つようにしたい

  1. 主に私は何か奇妙なときに私は嫌い、私はそれを働かせることができない!

私ははっきりと理解していない第二のものは、なぜ私はこの例外を取得していますされています

 
    15:25:28,587 ERROR [stderr] (default task-10)javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorExc 
eption: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid cert 
ification path to requested target 
15:25:28,587 ERROR [stderr] (default task-10) at com.liferoles.controller.UserManager.sendEmail(UserManager.java:484) 
15:25:28,587 ERROR [stderr] (default task-10) at com.liferoles.controller.UserManager.sendResetLink(UserManager.java:5 
14) 
15:25:28,587 ERROR [stderr] (default task-10) ... 44 more 
15:25:28,588 ERROR [stderr] (default task-10) Caused by: javax.mail.MessagingException: Could not convert socket to TLS; 

15:25:28,588 ERROR [stderr] (default task-10) nested exception is: 
15:25:28,588 ERROR [stderr] (default task-10) javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorExc 
eption: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid cert 
ification path to requested target 
15:25:28,588 ERROR [stderr] (default task-10) at com.sun.mail.smtp.SMTPTransport.startTLS(SMTPTransport.java:2000) 
15:25:28,588 ERROR [stderr] (default task-10) at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:70 
9) 
15:25:28,588 ERROR [stderr] (default task-10) at javax.mail.Service.connect(Service.java:386) 
15:25:28,589 ERROR [stderr] (default task-10) at javax.mail.Service.connect(Service.java:245) 
15:25:28,589 ERROR [stderr] (default task-10) at javax.mail.Service.connect(Service.java:194) 
15:25:28,589 ERROR [stderr] (default task-10) at javax.mail.Transport.send0(Transport.java:253) 
15:25:28,589 ERROR [stderr] (default task-10) at javax.mail.Transport.send(Transport.java:124) 
15:25:28,589 ERROR [stderr] (default task-10) at com.liferoles.controller.UserManager.sendEmail(UserManager.java:481) 
15:25:28,590 ERROR [stderr] (default task-10) ... 45 more 
15:25:28,590 ERROR [stderr] (default task-10) Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.Val 
idatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find v 
alid certification path to requested target

私が言及した第二の方法で電子メールを送信しようとしています。このエラーは、standalone.batコマンドでコンソールからwildflyサーバーを起動している場合にのみ発生します。「サーバー上で実行する」Eclipse経由で実行している場合、動作します。もう一度混乱します。私は自分の署名された証明書をjdks cacertsに追加することでこの2番目の問題を解決しようとしましたが、それは助けになりませんでした。

+0

"作業中の" Javaコードでは、xml設定と異なるポートを使用しています。 – ctomc

答えて

0

@ResourceのJavaコードはどのようなクラスですか?ほとんどの場合、コードは何らかの管理Bean /クラスにないため、リソースは注入されていません。 gmailSessionがnullでないかどうかをチェックして、注入が機能していることを確認します。

証明書パスのエラーは、信頼ストアの証明書に問題があることは間違いありません。通常、Gmail証明書はデフォルトのトラストストアで検証する必要があります。おそらく、要求を傍受しているアンチウイルス製品がありますか? JavaMail FAQ entryを確認しましたか?

+0

ヌルテストポジティブ、あなたは正しかった! G2gは今、明日解決してメッセージを残そうとします。今のThanx: –

+0

OK、両方の問題は解決しました。最初のケースではあなたは正しかったので、リソースの注入を以下のように変更しました:gmailSession = InitialContext.doLookup( "java:jboss/mail/Gmail");あなたは2番目の問題についても正しかった、最初はキーツールを悪い方法で使いました。あなたのリンクは私がそれを解決するのを助けました。 ありがとうございました! –

関連する問題