Как настроить привязку исходящего сокета для SMTP-почты в wildfly swarm для использования yaml?

Я переношу приложение с Wildfly 10.0.1.0 на Wildly Swarm 2017.7.0.

Все прошло довольно гладко, за исключением настройки электронной почты SMTP с использованием YAML:

Я пробовал некоторые альтернативы, но вот последняя, ​​основанная на том, что я думаю, что yaml будет из сопоставления standalone.xml - project-defaults.yml

swarm:
  socket-binding-groups:
    mail-socket:    
      outbound-socket-bindings:
        mail-smtp:
          remote-host: smtp.someprovider.com
          remote-port: 587

  mail:
    mail-sessions:
      smtpSession:
        jndi-name: java:/smtpSession
        smtp-server:
          username: username_here
          password: password_here
          tls: true
          outbound-socket-binding-ref: mail-smtp

Однако я все еще получаю сообщение об ошибке:

2017-08-05 11:17:36,100 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) WFLYCTL0013: Operation ("add") failed - address: ([
("subsystem" => "mail"),
("mail-session" => "smtpSession") 
]) - failure description: {
"WFLYCTL0412: Required services that are not installed:" => ["jboss.outbound-socket-binding.mail-smtp"],
"WFLYCTL0180: Services with missing/unavailable dependencies" => ["jboss.mail-session.smtpSession is missing [jboss.outbound-socket-binding.mail-smtp]"]
}
2017-08-05 11:17:36,155 INFO  [org.jboss.as.controller] (Controller Boot Thread) WFLYCTL0183: Service status report
WFLYCTL0184:    New missing/unsatisfied dependencies:
  service jboss.outbound-socket-binding.mail-smtp (missing) dependents: [service jboss.mail-session.smtpSession] 

------------------ Отредактировано 7 августа 2017 г. -------------------

По совету Ladicek я попробовал это:

 swarm:
   socket-binding-groups:
     standard-sockets:
       mail-socket:
         outbound-socket-bindings:
           mail-smtp:
             remote-host: smtp.someprovider.com
             remote-port: 587

а также

swarm:
  socket-binding-groups:
    standard-sockets:
      outbound-socket-bindings:
        mail-smtp:
          remote-host: smtp.someprovider.com
          remote-port: 587

а также

swarm:
  socket-binding-groups:
    standard-socket:
      outbound-socket-bindings:
        mail-smtp:
          remote-host: smtp.someprovider.com
          remote-port: 587

Однако ни один из них не работает, все еще есть та же ошибка.

Может ли кто-нибудь помочь в этом?

---------------------- РЕШЕНО --------------------------- -

Необходимо обновить до 2017.8.1 и использовать приведенную ниже конфигурацию.

network:
  socket-binding-groups:
    standard-sockets:
      outbound-socket-bindings:
        mail-smtp:
          remote-host: smtp.someprovider.com
          remote-port: 587

Спасибо.


person Bagas    schedule 05.08.2017    source источник


Ответы (3)


На первый взгляд, я считаю, что вам не хватает одного уровня структуры YAML: вам нужно выбрать группу привязки сокета, к которой вы добавляете привязку сокета. Это артефакт управляемого домена WildFly, концепция которого не применима к Swarm, но иногда вы сталкиваетесь с этим. В автономном WildFly и, следовательно, в Swarm есть только одна группа привязки сокетов: standard-sockets.

Итак, YAML будет выглядеть так:

swarm:
  socket-binding-groups:
    standard-sockets:
      mail-socket:
        ...

Также по любым вопросам о структуре Swarm YAML обращайтесь по адресу https://reference.wildfly-swarm.io

person Ladicek    schedule 05.08.2017
comment
Спасибо за помощь, но пока не работает. Ссылка не очень помогает и для привязок исходящих сокетов. - person Bagas; 07.08.2017
comment
Ах, верно. Забыл, что речь идет о привязках исходящих сокетов, они были добавлены совсем недавно. И вы правы, в ссылке ничего нет о привязках сокетов, очень плохо. Однако рад, что у вас все получилось! - person Ladicek; 08.08.2017

Наконец решено:

Необходимо обновить до 2017.8.1 и использовать приведенную ниже конфигурацию.

network:
  socket-binding-groups:
    standard-sockets:
      outbound-socket-bindings:
        mail-smtp:
        remote-host: smtp.someprovider.com
        remote-port: 587

Спасибо.

person Bagas    schedule 07.08.2017

Это сработало для меня.

yml-файл:

swarm:
  mail:
    mail-sessions:
      mail-socket:
        jndi-name: java:/mail/NGSoftMail
        smtp-server:
          username: [email protected]
          password: *****
          outbound-socket-binding-ref: mail-smtp
        debug: true
        from: [email protected] 

  network:
    socket-binding-groups:
      standard-sockets:
        outbound-socket-bindings:
          mail-smtp:
            remote-host: xxxmail.com.co
            remote-port: 25

Java-файл:

@ApplicationScoped
@Path("mailsender")
public class MailSender {

  @Resource(mappedName = "java:/mail/NGSoftMail")
  private Session session;

  @GET
  @Path("mail")
  public String sendGet() throws Exception {
    Message message = new MimeMessage(session);

    message.setFrom();
    message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("[email protected]", false));
    message.setSubject("asunto!!!");
    message.setSentDate(new Date());
    message.setContent("contenido!!!", "text/html; charset=UTF-8");

    Transport.send(message);

    return String.format("{\"your_mail\": \"%s\"}", "OK");
  }
}

пом-файл:

<dependency>
    <groupId>org.wildfly.swarm</groupId>
    <artifactId>mail</artifactId>
</dependency>
person Hector Garcia    schedule 24.08.2017