Can I ask what version of CXF? I think one of the older versions of CXF
sufferred from something similar to this. I think the newer versions work
better by forking a thread for the invoke, which is still not idea. This
area does need a bit more work. There is a jira open for it:
https://issues.apache.org/jira/browse/CXF-1907
just haven't had any time to really dig into it.
Dan
On Monday 26 January 2009 7:26:51 am Gox wrote:
> Hi
>
> I tried to invoke implementation of Provider web service asynchronously
> using invokeAsync methods of Dispatch but booth asynchronous methods blocks
> until response is received. i.e. invokeAsync work same as invoke method.
>
> Any help?
>
>
> This is client code
>
>
>
>
> Service service = Service.create(wsdlLocation, serviceName);
>
> Dispatch dispatch = service.createDispatch(portName, DOMSource.class,
> Service.Mode.PAYLOAD);
>
> Document doc = buildHelloRequest();
>
> System.out.println("Request sent to WS");
> Response response = dispatch.invokeAsync(new DOMSource(doc));
> System.out.println("Going to wait for response...");
>
> while(!response.isDone()) {
> System.out.println("Response not received yet, go to sleep 1000ms");
> Thread.sleep(1000);
> }
>
> System.out.println("Response received");
>
> Transformer transformer =
> TransformerFactory.newInstance().newTransformer();
> transformer.setOutputProperty(OutputKeys.INDENT, "yes");
> StreamResult result = new StreamResult(System.out);
> transformer.transform(response.get(), result);
>
>
>
>
> This is server code
>
>
>
>
> @WebServiceProvider(portName = "HelloMessagePort",
> serviceName = "HelloMessageService",
>
> targetNamespace="http://mycompany.com/ws/async/message")
> @ServiceMode(value = Service.Mode.PAYLOAD)
> public class HelloMessageProvider implements Provider {
>
> public DOMSource invoke(DOMSource request) {
> DOMSource response = null;
> try {
>
> Thread.sleep(3000);
>
> Document doc = buildHelloResponse(request);
> transformer.transform(new DOMSource(doc), result);
>
> response = new DOMSource(doc);
>
> } catch (Exception e) {
> e.printStackTrace();
> }
>
> return response;
> }
> }
--
Daniel Kulp
[email protected]
http://dankulp.com/blog