0

ユーザーアカウントの作成方法は以下の通りです。

      public String saveAccountInfo(User user) {

    if(null != user){
        userService.addUser(user);
        mailService.sendActivationEmail(user);
    }

    return "redirect:/greeting.html";
}

ユーザーがアカウント作成フォームを送信すると、「sendActivationEmail」が電子メールを正常に送信するまで、 greeting.html は表示されません。sendActivationEmail に時間がかかるため、ユーザーがグリーティング ページを表示するのに時間がかかっています。このメソッドをトリガーしてフローを完了するにはどうすればよいですか?

4

3 に答える 3

1

新しいスレッドを開始し、新しいスレッド内からメールを送信する必要があります。

これが、Java で非同期処理を実現できる唯一の方法です。

于 2013-01-29T11:55:46.833 に答える
0

これが私がやった方法です、

     public String saveAccountInfo(final User user) {

    if(null != user){
        user.setActivationKey(generateRandomKey());
        userService.addUser(user);
        new Thread(new Runnable(){
            @Override
            public void run() {
                mailService.sendActivationEmail(user);                  
            }               
        }).start();
    }       
    return "redirect:/greeting.html";
}
于 2013-01-29T18:20:43.293 に答える
0

アクティベーション メールを送信するタスクは、別のスレッドで実行できます。これにより、挨拶ページを表示できます。

if(null != user)
{
    userService.addUser(user);

    Thread mailSenderThread = new Thread(new Runnable()
    {
        public void run()
        {
            mailService.sendActivationEmail(user);
        }
    });
    mailSenderThread.start();
}

このようなことができます。

于 2013-01-29T12:02:27.633 に答える