[jboss-user] [JBoss Seam] - Sending (Seam) mail from a scheduled service

frehan do-not-reply at jboss.com
Thu Apr 5 06:42:32 EDT 2007


Hi I am tryin to send seam mails from a service and I can't get it to work.

My service checks my db every 1o minutes for updates and if it finds any a mail schould be sent.

>From my service I look up a stateless session bean using

InitialContext ctx = new InitialContext();
mailer =  (se.test.Mailer) ctx.lookup("Camitz/Mailer"); 

I now that I can't inject in a service so I have to do a lookup

My session been is annotated like  this:

@Stateless
@Name("mailerAction")
@Interceptors(SeamInterceptor.class)
@LocalBinding (jndiBinding="Camitz/Mailer")
@Scope(ScopeType.CONVERSATION)


The method for sending the mails :
public void sendAlarm(String to, String subject, String message){

  AlarmMailBean mailBean = new AlarmMailBean(to,subject,message,link);
  Contexts.getConversationContext().set("alarmMail", mailBean);
     try {
	 Renderer.instance().render("/mail/mailTemplate.xhtml");
      } 
      catch (Exception e) {
    	  e.printStackTrace();
      }
 } 

When the renderer is called I strangely get 2 different kinds off exceptions.

1. 
11:35:05,559 ERROR [AlarmService] java.lang.RuntimeException: java.lang.NoClassD
efFoundError: org/jboss/seam/ui/JSF
javax.ejb.EJBException: java.lang.RuntimeException: java.lang.NoClassDefFoundErr
or: org/jboss/seam/ui/JSF
        at org.jboss.ejb3.tx.Ejb3TxPolicy.handleExceptionInOurTx(Ejb3TxPolicy.ja
va:69)
        at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:83)
        at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java
:191)
        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:102)
        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.localInvoke(StatelessCont
ainer.java:211)
        at org.jboss.ejb3.stateless.StatelessLocalProxy.invoke(StatelessLocalPro
xy.java:79)
        at $Proxy186.test(Unknown Source)
        at se.camitz.admin.service.AlarmService.perform(AlarmService.java:59)


2. 
12:32:36,647 ERROR [STDERR] -- nested exception start --
java.lang.IllegalStateException: No application context active
        at org.jboss.seam.Component.forName(Component.java:1577)
        at org.jboss.seam.Component.getInstance(Component.java:1627)
        at org.jboss.seam.Component.getInstance(Component.java:1610)
        at org.jboss.seam.Component.getInstance(Component.java:1589)
        at org.jboss.seam.Component.getInstance(Component.java:1584)
        at org.jboss.seam.mail.MailSession.instance(MailSession.java:266)
        at org.jboss.seam.mail.ui.UIMessage.getMailSession(UIMessage.java:63)
        at org.jboss.seam.mail.ui.UIMessage.getMimeMessage(UIMessage.java:78)
        at org.jboss.seam.mail.ui.UIMessage.encodeBegin(UIMessage.java:101)
        at org.jboss.seam.ui.JSF.renderChild(JSF.java:171)
        at org.jboss.seam.ui.JSF.renderChildren(JSF.java:162)
        at org.jboss.seam.ui.facelet.FaceletsRenderer.renderFacelet(FaceletsRend
erer.java:150)
        at org.jboss.seam.ui.facelet.FaceletsRenderer.render(FaceletsRenderer.ja
va:112)
        at se.camitz.admin.mail.MailerAction.sendAlarm(MailerAction.java:77)



Exception 1. I dont understand but exception 2 is because I am not in a seam context.
How can I create a seam context or workaround this problem? 
I have tried to use org.jboss.seam.contexts.Lifecycle.beginCall(); in my method but it did not help.
Or is it impossible to use seam mail from a service?

Best Regards Fredrik


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

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



More information about the jboss-user mailing list