...
1. Specify that ProjectChangeReceiver implements the javax.jms.MessageListener interface:
public class ProjectChangeReceiver implements MessageListener { |
2. Inject a MessageDrivenContext and a PersistenceContext:
@Resource public MessageDrivenContext mdc; @PersistenceContext(unitName = "ems/EJB3_EDM_DEMO_PU") private EntityManager em; |
3. Implement the bean’s onMessage method as follows:
public void onMessage(Message inMessage) { TextMessage msg = null;
try { if (inMessage instanceof TextMessage) { msg = (TextMessage) inMessage; Projectchanges chPrj = new Projectchanges(); chPrj.setProjectId(msg.getIntProperty("ProjectId")); chPrj.setEndDate(new java.util.Date(msg.getLongProperty("EndDate"))); chPrj.setStartDate(new java.util.Date(msg.getLongProperty("StartDate"))); chPrj.setTitle(msg.getStringProperty("Title")); chPrj.setDescription(msg.getStringProperty("Description")); chPrj.setLeader(msg.getIntProperty("LeadId")); chPrj.setChangeDate(new java.sql.Timestamp(msg.getLongProperty("ChangeDate"))); chPrj.setStatus(msg.getIntProperty("Status")); chPrj.setChangerId(msg.getStringProperty("Changer")); em.merge(chPrj); ReferenceApplicationEJBLogger.logInfo("MESSAGE BEAN: Message received: " + chPrj.getProjectId()); } else { ReferenceApplicationEJBLogger.logWarn("Message of wrong type: " + inMessage.getClass().getName()); } } catch (JMSException e) { ReferenceApplicationEJBLogger.logException( e); mdc.setRollbackOnly(); } catch (Throwable te) { ReferenceApplicationEJBLogger.logThrowable( te); } } |
The implementation of the bean should now look like the one shown in ProjectChangeReceiver Source Code.