Пример MDB для приема запросов внешних вызовов от IMS

Так как MDB реализует интерфейс InboundListener, необходимо реализовать методы onMessage() и onNotification() для обработки синхронных и асинхронных запросов соответственно.

В следующем примере показан класс реализации объекта MDB (IMSCalloutIVPMDBBean), настроенного на прием как синхронных, так и асинхронных сообщений внешних вызовов от IMS.

package ejbs;

import java.io.IOException;
import javax.resource.ResourceException;
import javax.resource.cci.Record;
import com.ibm.connector2.ims.ico.IMSInputStreamRecord;
import commonj.connector.runtime.InboundInteractionSpec;

/**
 * Класс реализации объекта EJB IMSInboundMessage
 */
public class IMSCalloutIVPMDBBean
	implements
		javax.ejb.MessageDrivenBean,
		com.ibm.j2ca.base.ExtendedInboundListener {

	private javax.ejb.MessageDrivenContext fMessageDrivenCtx;

	/**
	 * getMessageDrivenContext
	 */
	public javax.ejb.MessageDrivenContext getMessageDrivenContext() {
		return fMessageDrivenCtx;
	}

	/**
	 * setMessageDrivenContext
	 */
	public void setMessageDrivenContext(javax.ejb.MessageDrivenContext ctx) {
		fMessageDrivenCtx = ctx;
	}

	/**
	 * ejbCreate
	 */
	public void ejbCreate() {
	}

	/**
	 * onMessage
	 */
	public void onMessage(javax.jms.Message msg) {
	}

	/**
	 * ejbRemove
	 */
	public void ejbRemove() {
	}

	/**
	  * onMessage
	  */
	public javax.resource.cci.Record onMessage(
		javax.resource.cci.Record arg0,
		javax.resource.cci.InteractionSpec arg1)
		throws javax.resource.ResourceException {
		
		return processSyncMessageReceived(arg1);
	}

	/**
	 * onNotification
	 */
	public void onNotification(
		javax.resource.cci.Record arg0,
		javax.resource.cci.InteractionSpec arg1)
		throws javax.resource.ResourceException {
		
		processAsyncMessageReceived(arg0);	
	}

	public void onNotification(Record arg0) throws ResourceException {
		processAsyncMessageReceived(arg0);	
	}

	public Record onMessage(Record arg0) throws ResourceException {
		return processSyncMessageReceived(arg0);
	}

	public Record onMessage(InboundInteractionSpec arg0, Record arg1)
throws ResourceException {
		return processSyncMessageReceived(arg1);
	}

	public void onNotification(InboundInteractionSpec arg0, Record arg1)
throws ResourceException {
		processAsyncMessageReceived(arg1);	
	}
	
	/*
	 * Обработка запроса синхронного внешнего вызова от IMS и возврат ответа.
	 */
	public Record processSyncMessageReceived(Object event) {
		
        SYNCCALLOUTREQUEST request = new SYNCCALLOUTREQUEST();
		SYNCCALLOUTRESPONSE response = new SYNCCALLOUTRESPONSE();
    	
    	try {
    		// Запрос
    		request.setBytes(((IMSInputStreamRecord)event).getBytes());
			
			System.out.println("Запрос синхронного внешнего вызова от IMS: " +
					request.getSync__callout__request__str());

			// Ответ
			response.setSync__callout__response__str("ВАС ПРИВЕТСТВУЕТ MDB WEBSPHERE");

			System.out.println("Ответ на синхронный внешний вызов от WAS MDB: " +
					response.getSync__callout__response__str());

    	} catch (IOException e) {
        	System.err.println(e);
       }
        		
		return response;
	}
	
	/*
	 * Прием запросов асинхронных внешних вызовов от IMS.
	 */
	public void processAsyncMessageReceived(Object event) {
        ASYNCCALLOUTREQUEST request = new ASYNCCALLOUTREQUEST();
    	
    	try {
    		request.setBytes(((IMSInputStreamRecord)event).getBytes());
			
			System.out.println("Запрос асинхронного внешнего вызова от IMS: " +
				request.getAsync__callout__request__str());
			
        } catch (IOException e) {
        	System.err.println(e);
        }
	}
}

Комментарии