Show TOC Start of Content Area

Syntax documentation ProjectChangeSender Source Code  Locate the document in its SAP Library structure

 

package com.sap.nwce.ra.edm.ejb.services;

 

import javax.annotation.PostConstruct;

import javax.annotation.PreDestroy;

import javax.annotation.Resource;

import javax.ejb.Local;

import javax.ejb.Stateless;

import javax.ejb.TransactionManagement;

import javax.ejb.TransactionManagementType;

import javax.jms.Connection;

import javax.jms.ConnectionFactory;

import javax.jms.JMSException;

import javax.jms.MessageProducer;

import javax.jms.Queue;

import javax.jms.Session;

import javax.jms.TextMessage;

 

import com.sap.nwce.ra.edm.ejb.entity.CeraProject;

 

/**

 * JMS SenderSession.

 */

@Stateless

@Local ({ProjectChangeSenderLocal.class})

@SuppressWarnings("boxing")

@TransactionManagement(value = TransactionManagementType.CONTAINER)

public class ProjectChangeSenderBean implements ProjectChangeSenderLocal {

 

   @Resource(name="EDMQueueConnectionFactory")

   private ConnectionFactory queueConnectionFactory;

 

   @Resource(name="prjChangeQueue")

   private Queue queue;

 

   private Connection queueConnection;

  

   public ProjectChangeSenderBean() {

   }

 

   @PostConstruct

   public void initialize() {

      try {

         queueConnection = queueConnectionFactory.createConnection();

         queueConnection.start();

      } catch (JMSException jmse) {

         ReferenceApplicationEJBLogger.logException(jmse);

         throw new RuntimeException(jmse);

      }

   }

 

   /**

    * Creates session, sender, message and send created message

    */

   public void sendMessage(CeraProject pProject, String pCaller) {

      Session queueSession = null;

      MessageProducer queueSender = null;

      try {

         queueSession = queueConnection.createSession(false, Session.AUTO_ACKNOWLEDGE);

         queueSender = queueSession.createProducer(queue);

         TextMessage textMsg = queueSession.createTextMessage();

         textMsg.setIntProperty("ProjectId", pProject.getProjectId());

         textMsg.setLongProperty("StartDate", pProject.getStartDate().getTime());

         textMsg.setLongProperty("EndDate", pProject.getEndDate().getTime());

         textMsg.setStringProperty("Title", pProject.getTitle());

         textMsg.setStringProperty("Description", pProject.getDescription());

         if(pProject.getLeader() != null) {

            textMsg.setIntProperty("LeadId", pProject.getLeader().getEmployeeId());

         } else {

            textMsg.setIntProperty("LeadId", -1);

         }

         textMsg.setLongProperty("ChangeDate", System.currentTimeMillis());

         textMsg.setIntProperty("Status", pProject.getStatus());

         textMsg.setStringProperty("Changer", pCaller);

         queueSender.send(textMsg);

      } catch (JMSException jmse) {

         ReferenceApplicationEJBLogger.logException(jmse);

         throw new RuntimeException(jmse);

      } finally {

         if (queueSession != null) {

            try {

               queueSession.close();

            } catch (JMSException jmse) {

               ReferenceApplicationEJBLogger.logException(jmse);

            }

         }

      }

   }

 

   @PreDestroy

   public void stopSession() {

 

      if (queueConnection != null) {

         try {

            queueConnection.close();

         } catch (JMSException jmse) {

            ReferenceApplicationEJBLogger.logException(jmse);

            throw new RuntimeException(jmse);

         }

      }

   }

 

}

 

 

End of Content Area