L'exemple suivant montre la classe d'implémentation d'un bean MDB (IMSCalloutIVPMDBBean) qui est configuré pour écouter à la fois les messages synchrones et les messages asynchrones émis par 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 d'implémentation du bean Enterprise : 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);
}
/*
* Traiter les demandes d'appel synchrones d'IMS et renvoyer une réponse
*/
public Record processSyncMessageReceived(Object event) {
SYNCCALLOUTREQUEST request = new SYNCCALLOUTREQUEST();
SYNCCALLOUTRESPONSE response = new SYNCCALLOUTRESPONSE();
try {
// Demande
request.setBytes(((IMSInputStreamRecord)event).getBytes());
System.out.println("Demande synchrone d'IMS : " +
request.getSync__callout__request__str());
// Réponse
response.setSync__callout__response__str("T'AS LE BONJOUR DU MDB WEBSPHERE");
System.out.println("Réponse synchrone du MDB WAS : " +
response.getSync__callout__response__str());
} catch (IOException e) {
System.err.println(e);
}
return response;
}
/*
* Recevoir des demandes d'appel asynchrones d'IMS
*/
public void processAsyncMessageReceived(Object event) {
ASYNCCALLOUTREQUEST request = new ASYNCCALLOUTREQUEST();
try {
request.setBytes(((IMSInputStreamRecord)event).getBytes());
System.out.println("Demande asynchrone d'IMS : " +
request.getAsync__callout__request__str());
} catch (IOException e) {
System.err.println(e);
}
}
}