我正在处理任务管理类型的应用程序。所以当有人完成任务时,任务创建者通过任务URL向消息发送一封邮件。我使用Spring MVC来创建这个应用程序。所以现在的问题是几乎同时创建两个任务,第一个任务的电子邮件我得到为第二个任务生成的URL。同步方法的最佳方式
我写了下面的方法来执行此功能
@RequestMapping(value = "commentTask", method = RequestMethod.POST)
@ResponseBody public List<List<Task>> reply(@ModelAttribute Task task,@RequestParam ("parentId") long parentId,HttpSession session) {
List<List<Task>> listTasks = null;
taskEntryService.insertTask(task,session);
listTasks = taskEntryService.selectAssignedTask(task.getAssignTo(), parentId);
String taskurl = siteUrl + "showAssignedTask?assignto="+ task.getAssignTo() + "&taskId="+parentId;
if(task.getTaskUpdateEmailNotify().equalsIgnoreCase("1")){
try {
if(task.getStatus() == 4){
String completedTaskBody = taskCompletedEmailBody(taskurl, task.getAssignToName(), task.getTaskTitle(), task.getAssignerName(), task.getSummary());
sendmailService.sendMail("[email protected]", task.getTaskCreatorEmail(), "Your Task has been Completed", completedTaskBody);
}
} catch (AddressException e) {
e.printStackTrace();
}
}
return listTasks;
}
那么什么是syncronize这种方法的最佳途径。
请让我知道如果有更多的细节需要
什么是'sendmailService'类型,并且类是线程安全的? 'taskEntryService'同上 –
这个方法是如何被调用的?用户是否点击了一个URL?你确定这个方法没有被错误的'Task'调用(可能是前端的一个bug)吗? –
@EmilSit此方法是有人回复创建的任务。因此,此方法将值存储在数据库中并将电子邮件发送给任务创建者。当有人在同一时间回复任务时,这种情况只发生一次,否则其工作正常。 – user965884