A seguinte amostra mostra uma classe de implementação de bean para um MDB (IMSCalloutIVPMDBBean) que está configurado para atender às mensagens de callout síncronas e assíncronas do 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;
/**
* Classe de implementação de bean para Enterprise Bean: 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);
}
/*
* Processamento de pedidos de callout síncronos do IMS e resposta retornada
*/
public Record processSyncMessageReceived(Object event) {
SYNCCALLOUTREQUEST request = new SYNCCALLOUTREQUEST();
SYNCCALLOUTRESPONSE response = new SYNCCALLOUTRESPONSE();
try {
// Pedido
request.setBytes(((IMSInputStreamRecord)event).getBytes());
System.out.println("Synchronous callout request from IMS: " +
request.getSync__callout__request__str());
// Resposta
response.setSync__callout__response__str("HELLO FROM WEBSPHERE MDB");
System.out.println("Synchronous callout response from WAS MDB: " +
response.getSync__callout__response__str());
} catch (IOException e) {
System.err.println(e);
}
return response;
}
/*
* Recebimento de pedidos de callout assíncrono do IMS
*/
public void processAsyncMessageReceived(Object event) {
ASYNCCALLOUTREQUEST request = new ASYNCCALLOUTREQUEST();
try {
request.setBytes(((IMSInputStreamRecord)event).getBytes());
System.out.println("Asynchronous callout request from IMS: " +
request.getAsync__callout__request__str());
} catch (IOException e) {
System.err.println(e);
}
}
}