É o seguinte: eu tenho um site de vendas pela internet, eu preciso intercalar os pedidos entre 3 emails. Antes estava intercalado em 2 desta forma: public class EnviarPedidoAction extends Action { private static final TestePedidoLogic pedidoLogic = (TestePedidoLogic)TestePedidoLogic.getInstance(); public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { String nome, email, titulo, texto,categoria, telefone; nome = StringUtils.clean(request.getParameter("nome")); titulo = StringUtils.clean(request.getParameter("titulo")); email = StringUtils.clean(request.getParameter("email")); texto = StringUtils.clean(request.getParameter("texto")); categoria = request.getParameter("categoria"); telefone = request.getParameter("telefone"); if ( nome == null || titulo == null || email == null || texto == null || telefone == null) { request.setAttribute("msg", "Ocorreu um erro no site, favor contatar o administrador!"); return mapping.findForward("dica"); } if(nome.length() < 1 || email.length() < 5 || texto.length() < 1) { request.setAttribute("msg", "Dados insuficientes. Favor preencher campos obrigatórios!"); if(categoria != null) return mapping.findForward("dica"); return mapping.findForward("pedido"); } Pedido pedido = new Pedido(); pedido.setNome(nome); pedido.setTitulo(titulo); pedido.setEmail(email); pedido.setTexto(texto); pedido.setData(Calendar.getInstance().getTime()); pedido.setTelefone(telefone); if(categoria != null) { pedido.setId_categoria(Integer.parseInt(categoria)); } try { pedidoLogic.inserePedido(pedido); Integer totalPedidosInseridos = pedidoLogic.getLastPedidoInserted(); //envia e-mail. EmailBean em = new EmailBean(VariaveisGlobais.SMTP_HOST); em.setFrom(email); if (( totalPedidosInseridos.intValue()%2 ) == 0) em.setTo(VariaveisGlobais.EMAIL_CONTATO); else em.setTo(VariaveisGlobais.EMAIL_CONTATO2); em.setSubject(titulo); TemplateFileHandler handler = new TemplateFileHandler(); //mensagem em html. handler.loadFile(servlet.getServletContext().getRealPath("") +"/email/pedido_contato.html"); handler.replace("#base_href#", VariaveisGlobais.HOSTNAME); handler.replace("#nome#",nome); handler.replace("#email#", email); handler.replace("#telefone#", telefone); handler.replace("#mensagem#", texto); em.insertPart(new MailHtmlPart(handler.getContent())); //mensagem em txt. handler.loadFile(servlet.getServletContext().getRealPath("") +"/email/pedido_contato.txt"); handler.replace("#nome#",nome); handler.replace("#email#", email); handler.replace("#telefone#", telefone); handler.replace("#mensagem#", texto); em.insertPart(new MailTextPart(handler.getContent())); em.EnviarEmail(); } catch(Exception e) { e.printStackTrace(); } request.setAttribute("msg","Sua mensagem foi enviada com sucesso.
Aguarde resposta!"); if(categoria != null) { request.setAttribute("link","/dicas/lista.scale"); // estatico!! tirar!! } return mapping.findForward("sucesso"); } } Eu sei que é uma dúvida boba, mas eu não sei como fazer, sou iniciante na área de Java Se alguém puder me ajudar desde já agradeço.
daria para formatar o seu código?? assim fica muito dificil de ler
muito dificil é ser educado, hehehe.
Se vc programa assim vc é um super heroi ehhehe.
Experimente formatar o código, ta meio complicado de entender.
Putz… o famoso Código de 2 Linhas!
e eu achando que eu que programo mau… kkkkkkkk…
[code]public class EnviarPedidoAction extends Action
{
private static final TestePedidoLogic pedidoLogic = (TestePedidoLogic)TestePedidoLogic.getInstance();
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
String nome, email, titulo, texto,categoria, telefone;
nome = StringUtils.clean(request.getParameter("nome"));
titulo = StringUtils.clean(request.getParameter("titulo"));
email = StringUtils.clean(request.getParameter("email"));
texto = StringUtils.clean(request.getParameter("texto"));
categoria = request.getParameter("categoria");
telefone = request.getParameter("telefone");
if ( nome == null
|| titulo == null
|| email == null
|| texto == null
|| telefone == null) {
request.setAttribute("msg", "Ocorreu um erro no site, favor contatar o administrador!");
return mapping.findForward("dica");
}
if(nome.length() < 1 || email.length() < 5 || texto.length() < 1) {
request.setAttribute("msg", "Dados insuficientes. Favor preencher campos obrigatórios!");
if(categoria != null) return mapping.findForward("dica");
return mapping.findForward("pedido");
}
Pedido pedido = new Pedido();
pedido.setNome(nome);
pedido.setTitulo(titulo);
pedido.setEmail(email);
pedido.setTexto(texto);
pedido.setData(Calendar.getInstance().getTime());
pedido.setTelefone(telefone);
if(categoria != null) {
pedido.setId_categoria(Integer.parseInt(categoria));
}
try {
pedidoLogic.inserePedido(pedido);
Integer totalPedidosInseridos = pedidoLogic.getLastPedidoInserted();
//envia e-mail.
EmailBean em = new EmailBean(VariaveisGlobais.SMTP_HOST);
em.setFrom(email);
if (( totalPedidosInseridos.intValue()%2 ) == 0)
em.setTo(VariaveisGlobais.EMAIL_CONTATO);
else
em.setTo(VariaveisGlobais.EMAIL_CONTATO2);
em.setSubject(titulo);
TemplateFileHandler handler = new TemplateFileHandler();
//mensagem em html.
handler.loadFile(servlet.getServletContext().getRealPath("") +"/email/pedido_contato.html");
handler.replace("#base_href#", VariaveisGlobais.HOSTNAME);
handler.replace("#nome#",nome);
handler.replace("#email#", email);
handler.replace("#telefone#", telefone);
handler.replace("#mensagem#", texto);
em.insertPart(new MailHtmlPart(handler.getContent()));
//mensagem em txt.
handler.loadFile(servlet.getServletContext().getRealPath("") +"/email/pedido_contato.txt");
handler.replace("#nome#",nome);
handler.replace("#email#", email);
handler.replace("#telefone#", telefone);
handler.replace("#mensagem#", texto);
em.insertPart(new MailTextPart(handler.getContent()));
em.EnviarEmail();
} catch(Exception e) {
e.printStackTrace();
}
request.setAttribute("msg","Sua mensagem foi enviada com sucesso.<br>Aguarde resposta!");
if(categoria != null) {
request.setAttribute("link","/dicas/lista.scale"); // estatico!! tirar!!
}
return mapping.findForward("sucesso");
}
}
[code]
Me desculpem, só colei errado.
Eu, particularmente, pensaria em criar serviços assincronos.
A servlet recebe os parametros e manda para outra classe/servlet/sistema que faz o processo em background. Vc pode fazer pooling de status (com cuidado) nesse processo (perguntando qual status/etapa) OU implementar algum callback (veja o que melhor te atende). Dessa forma se o serviço de email ou outro processo engargalar vc não trava a servlet.