Show TOC Start of Content Area

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

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

 

import javax.annotation.Resource;

import javax.ejb.ActivationConfigProperty;

import javax.ejb.EJB;

import javax.ejb.EJBException;

import javax.ejb.MessageDriven;

import javax.ejb.MessageDrivenContext;

import javax.jms.Connection;

import javax.jms.ConnectionFactory;

import javax.jms.JMSException;

import javax.jms.Message;

import javax.jms.MessageListener;

import javax.jms.MessageProducer;

import javax.jms.ObjectMessage;

import javax.jms.Session;

import javax.jms.TemporaryQueue;

import javax.jms.TextMessage;

 

import com.sap.nwce.ra.edm.util.DataResetResult;

import com.sap.nwce.ra.edm.util.ReferenceApplicationEJBLogger;

 

 

/**

 * The MessageBean class is a message-driven bean.  It implements

 * the javax.jms.MessageListener interface. It is defined as public

 * (but not final or abstract).

 */

@MessageDriven(

      activationConfig =  {

      @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),

       @ActivationConfigProperty(propertyName = "destination", propertyValue = "appResetQueue"),

       @ActivationConfigProperty(propertyName = "connectionFactoryName", propertyValue = "EDMQueueConnectionFactory")

})

 

public class ApplicationResetReceiverBean implements MessageListener {

 

    @Resource

    public MessageDrivenContext mdc;

 

    @EJB private DataResetServiceLocal dataServiceFacade;

 

   @Resource(name="EDMQueueConnectionFactory")

   private ConnectionFactory queueConnectionFactory;

 

 

    /**

     * Constructor, which is public and takes no arguments.

     */

    public ApplicationResetReceiverBean() {

    }

 

    public void setMessageDrivenContext(MessageDrivenContext ctx) throws EJBException{

      this.mdc = ctx;

    }

 

    /**

     * onMessage method, declared as public (but not final or

     * static), with a return type of void, and with one argument

     * of type javax.jms.Message.

     *

     * Casts the incoming Message to a TextMessage and displays

     * the text.

     *

     * @param inMessage    the incoming message

     */

    public void onMessage(Message inMessage) {

        TextMessage msg = null;

        DataResetResult dataResetResult;

        try {

            if (inMessage instanceof TextMessage) {

                msg = (TextMessage) inMessage;

                ReferenceApplicationEJBLogger.logInfo("MESSAGE BEAN: Message received: " + msg.getText());

                if (msg.getText().equals("reset")){

                  dataResetResult = dataServiceFacade.resetContent();

                  processNotification((TemporaryQueue) msg.getJMSReplyTo(), dataResetResult);

                }else{

                  ReferenceApplicationEJBLogger.logInfo("MESSAGE BEAN: Message received: " + msg.getText() + " but nothing to do!");

                }

            } else {

               ReferenceApplicationEJBLogger.logInfo("Message of wrong type: " + inMessage.getClass().getName());

            }

        } catch (JMSException jmsExc) {

        ReferenceApplicationEJBLogger.logException(jmsExc);

            mdc.setRollbackOnly();

        } catch (Throwable te) {

        ReferenceApplicationEJBLogger.logThrowable(te);

        }

    }

 

 

   private void processNotification(TemporaryQueue queue, DataResetResult result) throws JMSException{

      Session jmsSession = null;

      MessageProducer queueSender = null;

      Connection connection = null;

 

      try {

         connection = queueConnectionFactory.createConnection();

         jmsSession = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

         queueSender = jmsSession.createProducer(queue);

         ObjectMessage msg = jmsSession.createObjectMessage();

         msg.setObject(result);

         queueSender.send(msg);

      } finally {

          if (connection != null) {

            connection.close();

          }

      }

   }

}

 

 

 

 

 

End of Content Area