1、binding.xml準備
<bindings
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
wsdlLocation="ClockService.wsdl"
xmlns="http://java.sun.com/xml/ns/jaxws">
<bindings node="wsdl:definitions">
<enableAsyncMapping>true</enableAsyncMapping>
</bindings>
</bindings>
2、wsimport実行
wsimport -p net.tianyu.sample.axis2.client -keep .\META-INF\ClockService.wsdl -b .\META-INF\binding.xml
3、Clientソース作成 (callback)
GetClockHandler.java
package net.tianyu.sample.axis2.main;
import javax.xml.ws.AsyncHandler;
import javax.xml.ws.Response;
import net.tianyu.sample.axis2.client.GetClockResponse;
public class GetClockHandler implements AsyncHandler<GetClockResponse> {
public void handleResponse(Response<GetClockResponse> response) {
try {
String returnValue = response.get().getReturn().getValue();
System.out.println(returnValue);
} catch (Exception e) {
e.printStackTrace();
}
}
}
TestClient.java
package net.tianyu.sample.axis2.main;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
import javax.xml.ws.Response;
import net.tianyu.sample.axis2.client.ClockService;
import net.tianyu.sample.axis2.client.ClockServicePortType;
import net.tianyu.sample.axis2.client.GetClockResponse;
public class TestClient {
public static void main(String[] args) throws InterruptedException, ExecutionException {
ClockService service = new ClockService();
ClockServicePortType port = service.getClockServiceHttpSoap11Endpoint();
// callback
GetClockHandler asyncHandler = new GetClockHandler();
Future<?> future = port.getClockAsync("TianYu ", asyncHandler);
while (true) {
if (future.isDone())
break;
System.out.println("I'm waiting response!");
Thread.sleep(100);
}
// polling
Response<GetClockResponse> response = port.getClockAsync("TianYu ");
while (true) {
if (response.isDone())
break;
System.out.println("I'm waiting response!");
Thread.sleep(100);
}
System.out.println(response.get().getReturn().getValue());
}
}