[jboss-user] [JBoss Seam] - Re: Is it possible to send mail from asynchronous method

tazman do-not-reply at jboss.com
Wed Mar 21 06:34:40 EDT 2007


I just tested sending a mail from an asynchronous method (using JSF RI 1.2_03). 

1 - I rebuilt Seam from CVS 
2 - tested the following method, which worked


  | public void newMessage(ContactMessage message) { 
  |     try { 
  | 	  renderer.render("/mails/contact.xhtml"); 
  | 	  log.debug("Email sent successfully"); 
  |     } catch (Exception e) { 
  | 	  log.error("Error sending email", e); 
  |     }
  | }

3 - modified the method to make it asynchronous:


  | @Asynchronous
  | public void newMessage(ContactMessage message) { 
  |     Contexts.getConversationContext().set("message", message);
  |     try { 
  | 	  renderer.render("/mails/contact.xhtml"); 
  | 	  log.debug("Email sent successfully"); 
  |     } catch (Exception e) { 
  | 	  log.error("Error sending email", e); 
  |     }
  | }
 
This threw NPE:

java.lang.NullPointerException 
  |         at com.sun.faces.renderkit.RenderKitImpl.createResponseWriter(RenderKitI 
  | mpl.java:203) 
  |         at org.jboss.seam.ui.facelet.FaceletsRenderer.wrapResponseWriter(Facelet 
  | sRenderer.java:106) 
  |         at org.jboss.seam.ui.facelet.FaceletsRenderer.render(FaceletsRenderer.ja 
  | va:62) 
  |         at actions.EventListener.newMessage(EventListener.java: 
  | 137) 
  |         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
  |         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl. 
  | java:39) 
  |         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces 
  | sorImpl.java:25) 
  |         at java.lang.reflect.Method.invoke(Method.java:585) 
  |         at org.jboss.seam.util.Reflections.invoke(Reflections.java:20) 
  |         at org.jboss.seam.intercept.RootInvocationContext.proceed(RootInvocation 
  | Context.java:31) 
  |         at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocation 
  | Context.java:57) 
  |         at org.jboss.seam.interceptors.RollbackInterceptor.aroundInvoke(Rollback 
  | Interceptor.java:34) 
  |         at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocation 
  | Context.java:69) 
  |         at org.jboss.seam.interceptors.BijectionInterceptor.aroundInvoke(Bijecti 
  | onInterceptor.java:47) 
  |         at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocation 
  | Context.java:69) 
  |         at org.jboss.seam.interceptors.MethodContextInterceptor.aroundInvoke(Met 
  | hodContextInterceptor.java:27) 
  |         at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocation 
  | Context.java:69) 
  |         at org.jboss.seam.interceptors.AsynchronousInterceptor.aroundInvoke(Asyn 
  | chronousInterceptor.java:37) 
  |         at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocation 
  | Context.java:69) 
  |         at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java: 
  | 103) 
  |         at org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation(Java 
  | BeanInterceptor.java:151) 
  |         at org.jboss.seam.intercept.JavaBeanInterceptor.invoke(JavaBeanIntercept 
  | or.java:87) 
  |         at net.benim.core.actions.EventListener_$$_javassist_40.newCelebrity(Eve 
  | ntListener_$$_javassist_40.java) 
  |         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
  |         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl. 
  | java:39) 
  |         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces 
  | sorImpl.java:25) 
  |         at java.lang.reflect.Method.invoke(Method.java:585) 
  |         at org.jboss.seam.util.Reflections.invoke(Reflections.java:20) 
  |         at org.jboss.seam.util.Reflections.invokeAndWrap(Reflections.java:123) 
  |         at org.jboss.seam.core.Dispatcher$AsynchronousInvocation.call(Dispatcher 
  | .java:134) 
  |         at org.jboss.seam.core.Dispatcher$Asynchronous.execute(Dispatcher.java:8 
  | 8) 
  |         at org.jboss.seam.core.Dispatcher.dispatch(Dispatcher.java:165) 
  |         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
  |         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl. 
  | java:39) 
  |         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces 
  | sorImpl.java:25) 
  |         at java.lang.reflect.Method.invoke(Method.java:585) 
  |         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation. 
  | java:112) 
  |         at org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationCo 
  | ntextImpl.java:166) 
  |         at org.jboss.ejb3.interceptor.EJB3InterceptorsInterceptor.invoke(EJB3Int 
  | erceptorsInterceptor.java:63) 
  |         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation. 
  | java:101) 
  |         at org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invok 
  | e(TransactionScopedEntityManagerInterceptor.java:54) 
  |         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation. 
  | java:101) 
  |         at org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsI 
  | nterceptor.java:47) 
  |         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation. 
  | java:101) 
  |         at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:79) 
  |         at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java 
  | :197) 
  |         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation. 
  | java:101) 
  |         at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInt 
  | erceptor.java:76) 
  |         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation. 
  | java:101) 
  |         at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(Stateles 
  | sInstanceInterceptor.java:62) 
  |         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation. 
  | java:101) 
  |         at org.jboss.aspects.security.AuthenticationInterceptor.invoke(Authentic 
  | ationInterceptor.java:77) 
  |         at org.jboss.ejb3.security.Ejb3AuthenticationInterceptor.invoke(Ejb3Auth 
  | enticationInterceptor.java:131) 
  |         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation. 
  | java:101) 
  |         at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterce 
  | ptor.java:47) 
  |         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation. 
  | java:101) 
  |         at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(Asynchrono 
  | usInterceptor.java:106) 
  |         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation. 
  | java:101) 
  |         at org.jboss.ejb3.stateless.StatelessContainer.callTimeout(StatelessCont 
  | ainer.java:150) 
  |         at org.jboss.ejb.txtimer.TimerImpl$TimerTaskImpl.run(TimerImpl.java:524) 
  |  
  |         at java.util.TimerThread.mainLoop(Timer.java:512) 
  |         at java.util.TimerThread.run(Timer.java:462) 
  | 


tazman



View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4030174#4030174

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4030174



More information about the jboss-user mailing list