Pessoal,
Criei uma tela de cadastro onde ao ser finalizado, o usuario recebe um email de notificação para validar esse cadastro no sistema, funciona direitinho, o unico problema é q quando submete a pagina, a requisição demora um pouco pq tem q esperar o envio de email para ir pra outra tela.
Gostaria de enviar esse email de modo assincrono, onde o usuario nao precisasse esperar o envio pra ir pra outra tela, estou tentando usar o quartz.
Uso o jboss seam, segue uma parte do código:
@AutoCreate
@Scope(ScopeType.EVENT)
@Name(value = "emailService")
public class EmailService extends BaseService{
private static final long serialVersionUID = 5244030103739409827L;
@Asynchronous
public void enviarEmail(@Duration long delay, String caminho) {
try {
renderer.render(caminho);
FacesMessages.instance().add("Voce recebera um email de notificacao");
} catch (Exception e) {
FacesMessages.instance().add("Falha ao enviar email: Mensagem: "+e.getMessage()+" Causa: "+e.getCause());
}
}
}
Na chamada eu faço o seguinte:
emailService.enviarEmail(500,"/faces/email/cadastroconfirmemail.xhtml");
Configurei meu components.xml
<async:quartz-dispatcher/>
Coloquei o jar do quartz na pasta lib
E o erro q me da é esse:
Caused by: java.lang.IllegalArgumentException: Group name cannot be empty.
at org.quartz.JobDetail.setGroup(JobDetail.java:196)
at org.quartz.JobDetail.<init>(JobDetail.java:122)
at org.jboss.seam.async.QuartzDispatcher.scheduleWithQuartzService(QuartzDispatcher.java:132)
at org.jboss.seam.async.QuartzDispatcher.scheduleWithQuartzServiceAndWrapExceptions(QuartzDispatcher.java:115)
at org.jboss.seam.async.QuartzDispatcher.scheduleInvocation(QuartzDispatcher.java:101)
at org.jboss.seam.async.QuartzDispatcher.scheduleInvocation(QuartzDispatcher.java:44)
at org.jboss.seam.async.AsynchronousInterceptor.aroundInvoke(AsynchronousInterceptor.java:38)
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:107)
at org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation(JavaBeanInterceptor.java:166)
at org.jboss.seam.intercept.JavaBeanInterceptor.invoke(JavaBeanInterceptor.java:102)
at br.com.opengeo.eventus.servico.EmailService_$$_javassist_6.enviarEmail(EmailService_$$_javassist_6.java)
at br.com.opengeo.eventus.acao.InscricaoBean.baixaInscricao(InscricaoBean.java:357)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.jboss.seam.util.Reflections.invoke(Reflections.java:21)
at org.jboss.seam.intercept.RootInvocationContext.proceed(RootInvocationContext.java:31)
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:56)
at org.jboss.seam.transaction.RollbackInterceptor.aroundInvoke(RollbackInterceptor.java:31)
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
at org.jboss.seam.core.BijectionInterceptor.aroundInvoke(BijectionInterceptor.java:46)
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
at org.jboss.seam.core.ConversationInterceptor.aroundInvoke(ConversationInterceptor.java:56)
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
at org.jboss.seam.core.MethodContextInterceptor.aroundInvoke(MethodContextInterceptor.java:42)
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:107)
at org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation(JavaBeanInterceptor.java:166)
at org.jboss.seam.intercept.JavaBeanInterceptor.invoke(JavaBeanInterceptor.java:102)
at br.com.opengeo.eventus.acao.InscricaoBean_$$_javassist_4.baixaInscricao(InscricaoBean_$$_javassist_4.java)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.jboss.el.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:329)
at org.jboss.el.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:274)
at org.jboss.el.parser.AstMethodSuffix.getValue(AstMethodSuffix.java:59)
at org.jboss.el.parser.AstMethodSuffix.invoke(AstMethodSuffix.java:65)
at org.jboss.el.parser.AstValue.invoke(AstValue.java:96)
at org.jboss.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:68)
at com.sun.facelets.el.LegacyMethodBinding.invoke(LegacyMethodBinding.java:69)
... 49 more
Será q é algum problema na configuração do quartz ?
Q grupo é esse q ele diz estar vazio?
Alguem teria um exemplo de envio de emails assincrono com o quartz?
Desde já agradeço a ajuda !
Valeu !