Führen Sie hintergrund-Prozess in verschiedenen Threads in Java

Schreibe ich eine Anwendung, wo Benutzer können hinzufügen und entfernen, die andere Benutzer als Freunde.
Meine Seite hat eine Liste der verschiedenen Benutzer und jeder Benutzer hat mit einer Schaltfläche hinzufügen in die Freundesliste.
Ich sende eine AJAX Anfrage an Java-servlet, um die gewählten Benutzer als Freund.
Ich zeige Warnung bei UI um zu zeigen das Ergebnis des Prozesses.

Mein problem ist ich habe ne mail geschickt, wenn der Benutzer wird Hinzugefügt als Freund dieser code ist geschrieben in der gleichen Methode im servlet.

Weil dieses Stück code meiner alert-Meldung kommt sehr spät.

Muss ich laufen, eine separate pthread ausführen "mail senden" - Funktion, so dass, wenn Benutzer Hinzugefügt wird, werde ich das Ergebnis erhalten und die mail wird in separater Prozess.

Meinen code in das Servlet ist

private void sendMail(long inviteeID) {
    User inviteeUser = null;
    try {
        inviteeUser = userHandler.getUser(inviteeID);
    } catch (DataException e) {
        sLog.error("User does not exist.", e);
    } catch (UserNotFoundException e) {
        sLog.error("User does not exist.", e);
    }
    MailUtility.send(inviteeUser.getUserEmailAddress().trim(),
            "[email protected]", "add friend message", Utility
                    .getAddFriendMessageBody(LoginHelper
                            .getLoggedInUserEmail()), false);
}



private String inviteAsFriend(long inviteeID) {

    boolean result = false;

    if (LoginHelper.isUserLoggedIn()) {
        try {
            User user = userHandler.findUserByEmail(LoginHelper
                    .getLoggedInUserEmail());

            if (userHandler.isUserFriend(user.getUserId(), inviteeID)) {

                if (userHandler.addFriend(user, inviteeID)) {

                    result = true;
                    return "Member added successfully as your friend.";
                } else {

                    return "Member could not be added as your friend. Please try again later.";
                }

            } else {

                return "Member is already your friend.";
            }

        } catch (DataException e) {

            return "User does not exist.";
        } catch (UserNotFoundException e) {

            return "User does not exist.";
        } catch (Exception e) {

            return "Member could not be added as your friend. Please try again later.";
        } finally {
            if (result) {
                sendMail(inviteeID);
            }
        }
    } else {
        return "User not logged in.";
    }
}

InformationsquelleAutor viredra-agarwal | 2010-01-20

Schreibe einen Kommentar