Accessing renderer from a MDB
rlperry Mar 5, 2008 2:21 AMShould I be able to use a org.jboss.seam.faces.Renderer from a message driven bean?
I wrote some test code to find out, but it is going very poorly.
I would very much like to use seam's email template from a MDB. If it matters, I would eventually like for the email to include a PDF template, though may failing test code does not yet include this.
Very similar code works wonderfully when call as a result of interaction with a web browser. Being pretty new to JSF and Seam I do not really know if this general direction is even plausible. Guidance would be greatly appreciated.
The MDB looks like:
@MessageDriven(activationConfig = { @ActivationConfigProperty(propertyName="cronTrigger", propertyValue="0 * * * * ?") }) @ResourceAdapter("quartz-ra.rar") @Name("timeListener") public class TimeMDB implements Job { private static final Logger log = Logger.getLogger(TimeMDB.class); @EJB FleetMaintenance fml; @In(create=true) private Renderer renderer; public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { log.info("************* The MDB got called!!!!"); renderer.render("/EMailTest.xhtml"); log.info("************** Email sent successfully!!!!"); } }
The logged exception follows:
Caused by: java.lang.IllegalStateException: Application was not properly initialized at startup, could not find Factory: javax.faces.application.ApplicationFactory at javax.faces.FactoryFinder.getFactory(FactoryFinder.java:256) at org.jboss.seam.mock.MockFacesContext.<init>(MockFacesContext.java:60) at org.jboss.seam.ui.facelet.FaceletsRenderer$RenderingContext.init(FaceletsRenderer.java:95) at org.jboss.seam.ui.facelet.FaceletsRenderer$RenderingContext.run(FaceletsRenderer.java:77) at org.jboss.seam.ui.facelet.FaceletsRenderer.render(FaceletsRenderer.java:169) at com.myrslink.webface.reports.TimeMDB.execute(TimeMDB.java:37) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.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(InvocationContextImpl.java:166) at org.jboss.seam.intercept.EJBInvocationContext.proceed(EJBInvocationContext.java:44) 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.MethodContextInterceptor.aroundInvoke(MethodContextInterceptor.java:42) at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68) at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:118) at org.jboss.seam.intercept.SessionBeanInterceptor.aroundInvoke(SessionBeanInterceptor.java:50) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:118) at org.jboss.ejb3.interceptor.EJB3InterceptorsInterceptor.invoke(EJB3InterceptorsInterceptor.java:63) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(TransactionScopedEntityManagerInterceptor.java:54) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:47) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101) at org.jboss.aspects.tx.TxPolicy.invokeInCallerTx(TxPolicy.java:126) ... 11 more