В следующем примере показан класс реализации объекта 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);
}
}
}