Email Listening MDB Accessing Seam Components
djeverson Mar 4, 2007 1:53 PMWe are getting a Null Pointer Exception in an MDB that is listening for emails.
It appears that the Seam components are not being properly injected. We get errors when we attempt to use @Logger. We have changed these for the time being to System.out.printlns. Our service EJB components are not getting injected either.
Our environment is Seam 1.1.7RC1, JBoss 4.0.5. The mail-ra.rar file has been placed in the server\default\deploy folder.
The following is our MDB that is throwing the NPEs:
package us.crimnet.iss.listeners;
import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
import javax.ejb.Stateless;
import javax.mail.Message;
import org.jboss.annotation.ejb.ResourceAdapter;
import org.jboss.mail.MailException;
import org.jboss.resource.adapter.mail.inflow.MailListener;
import org.jboss.seam.Component;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.ScopeType;
import us.crimnet.iss.services.HistoryManagement;
import us.crimnet.iss.services.impl.HistoryManagementImpl;
@MessageDriven(activationConfig={
 @ActivationConfigProperty(propertyName="mailServer", propertyValue="domain.com"),
 @ActivationConfigProperty(propertyName="mailFolder", propertyValue="INBOX"),
 @ActivationConfigProperty(propertyName="storeProtocol", propertyValue="pop3"),
 @ActivationConfigProperty(propertyName="userName", propertyValue="uid"),
 @ActivationConfigProperty(propertyName="password", propertyValue="pwd")
})
@ResourceAdapter("mail-ra.rar")
@Name("requestEmailListener")
public class RequestEmailListener implements MailListener {
 @In(create=true)
 private HistoryManagement historyManagement;
 public void onMessage(Message message) {
 System.out.println("Can we inject the @Logger here???");
 System.out.println("RequestEmailListener.onMessage()");
 try {
 Long id = Long.parseLong(message.getSubject());
 System.out.println("History id [" + id + "]");
 //TODO : dj : The following line threw an NPE
 // was it not properly injected by Seam?
 historyManagement.sendRequest(id);
 System.out.println("back from HistoryManagement");
 } catch (Exception e) {
 e.printStackTrace();
 }
 }
}
Any suggestions as to what the causing the Seam Components not to be injected or initialized?
Thanks!