I componenti del servizio che necessitano di gestire interazioni di callback asincrono implementano questa interfaccia.
Utilizzare il metodo in questa interfaccia per restituire una risposta ad un componente che ha effettuato una richiesta asincrona al servizio. Per riuscire, questo componente deve inoltrare al servizio un ticket quando il client richiama il servizio.
pacchetto sample.alarm; import java.util.Date; import com.ibm.websphere.sca.Service; import com.ibm.websphere.sca.ServiceCallback; import com.ibm.websphere.sca.ServiceManager; import com.ibm.websphere.sca.Ticket; import com.ibm.websphere.sca.scdl.OperationType; import com.ibm.websphere.sca.scdl.Reference; import com.ibm.websphere.sca.sdo.DataFactory; import commonj.sdo.DataObject; import commonj.sdo.Type; /* * Questo codice implementa l'interfaccia di avvertenza e richiama il timer in modo asincrono. */ public class SimpleDIIAlarmImpl implements SimpleAlarm, ServiceCallback { public void setAlarm(String name, int duration) { ServiceManager serviceManager = new ServiceManager(); // Inoltrare la richiesta // Ottenere il tipo di input setTimer e creare l'argomento di conseguenza Service asyncTimerService = (Service) serviceManager.locateService("timer"); Reference reference = asyncTimerService.getReference(); OperationType operationType = reference.getOperationType("startTimer"); Type inputType = operationType.getInputType(); DataFactory dataFactory = DataFactory.INSTANCE; DataObject input = dataFactory.create(inputType); input.set(0, new Integer(duration)); input.set(1, name); // Richiamare il servizio timer Ticket ticket = asyncTimerService.invokeAsyncWithCallback("startTimer", input); System.out.println("Sent async with callback."); } /* * @see com.ibm.websphere.sca.ServiceCallback#onInvokeResponse * (com.ibm.websphere.sca.Ticket, java.lang.Object, java.lang.Exception) */ public void onInvokeResponse(Ticket arg0, Object arg1, Exception arg2) { System.out.println("onInvokeResponse()"); if (arg2 != null) { System.out.println("Timer ran into exception: " + arg2.getMessage()); } else { System.out.println("Alarm " + arg1 + " went off at " + new Date(System.currentTimeMillis())); } } }