You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by José Renato <jo...@suntech.com.br> on 2007/11/28 20:25:58 UTC
service listener
Hi All,
I am using Axis2 v1.3 and I would like to know if is there a way to
implement a service side listener that after a simple client call it
notifies the client frequently? Many times until a final event, like a
status notifier? For exemple, consider this client code:
//...
OperationServiceImplStub.AddOperationCallback addOperCallback = new
OperationServiceImplStub.AddOperationCallback();
addOperCallback.setOperationBean(getOperBean());
addOperCallback.setReqInfoBean(getReqInfo());
//I know that this is invalid! Just to illustrate the idea...
addOperCallback.setCallback(new StatusListener() {
public void statusChanged(StatusEvent se) {
//Do something...
}
});
AddOperationCallbackResponse addOperRespose =
operStub.addOperationCallback(addOperCallback);
//...
The service side:
//...
public OperationBean addOperationCallback(OperationBean oper,
RequestInfoBean reqInfoBean, StatusListener callback) {
operation = addOperation(oper, reqInfo);
if (callback != null) {
startCallback(oper, callback);
}
return oper;
}
//just emulates a state change workflow...
private void startCallback(final Operation oper, final StatusListener
callback) {
final String[] status = { "new", "activating", "active",
"inactivating", "inactive" };
Thread t = new Thread() {
public void run() {
Random r = new Random();
for (int i = 0; i < status.length; i++) {
try {
Thread.sleep(r.nextInt(14) + 1);
StatusEvent se = new StatusEventImpl();
se.setStatus(oper.getId() + ':' + status[i]);
callback.statusChanged(se);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
};
t.start();
}
//...
How can I fit this code to work properly?
Thanks a lot.
José Renato.
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org