Actualmente tengo un método de servicio de jabón web que funciona bien, pero me gustaría saber cómo puedo convertirlo para que devuelva una confirmación de que se recibió el mensaje y que el cliente no espere hasta que termine el proceso.
@Service @WebService(serviceName = "getStudents",wsdlLocation="/wsdl/Students.wsdl") public class StudentsImpl implements Students { public StudentResponse getStudents(StudentRequest request) { ********************** } } public class StudentResponse { private String status; private Date timeStamp; .................... }Me gustaría saber cómo puedo responder con un estado "OK" y también la hora.
@WebService public abstract interface Students { @WebResult(name="response") @XmlElement(required=true, name="request") public abstract StudentResponse getStudents(@WebParam(name="request") StudentRequest request); }Hm, curiosamente, esto parece ser lo contrario de la última pregunta que respondí, Cómo convertir una llamada asíncrona en bloqueo .
Entonces los pasos son:
Suponiendo que su llamada de bloqueo es fooBlocking() , haga lo siguiente:
public class MyKoolClass { // .. kool functionalities here ... public interface Listener { void onTaskCompleted(String message); } public void fooAsyncWrapper() { new FooTask(new Listener() { @Override public void onTaskCompleted(final String message) { System.out.println("So complete, bruh" + message); } }).start(); } public static class FooTask extends Thread { Listener listener; public FooTask(final Listener listener) { this.listener = listener; } @Override public void run() { fooBlocking(); listener.onTaskCompleted("Sup baws."); } }