I believe you sent in an e-mail (see below) stating that you already solved this?
--- Dear Daniel, Finally it worked. Thank you for your support to both you and André. The trick was the SEi, in particular the UseAsyncMethod on the implementation and the @ResponseWrapper notation on the synch method of the interface. BR, Giovanni --- Anyways, did you try to follow Daniel's advice? Did you take a look at the samples? André Costa Lima 2015-01-22 7:03 GMT+00:00 wangnima <[email protected]>: > Dear André, > > > > I have added the polling method and it starts to work, or better the error > is different. Now I have the following excpetion: > > > > Jan 07, 2015 3:27:26 PM pt.uninova.proseco.services.async.TestAsyncHandler > handleResponse > > SEVERE: null > > java.util.concurrent.ExecutionException: java.lang.ClassCastException: > pt.uninova.proseco.services.jaxws_asm.MypingWebServiceResponse cannot be > cast to pt.uninova.proseco.services.async.response.MypingMessage > > at > org.apache.cxf.jaxws.JaxwsClientCallback$2.get(JaxwsClientCallback.java:99) > > at > > pt.uninova.proseco.services.async.TestAsyncHandler.handleResponse(TestAsyncHandler.java:27) > > at > > org.apache.cxf.jaxws.JaxwsClientCallback.handleException(JaxwsClientCallback.java:87) > > at > org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:821) > > at > > org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1636) > > at > > org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream$1.run(HTTPConduit.java:1145) > > at > > org.apache.cxf.workqueue.AutomaticWorkQueueImpl$3.run(AutomaticWorkQueueImpl.java:428) > > at > > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) > > at > > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) > > at > > org.apache.cxf.workqueue.AutomaticWorkQueueImpl$AWQThreadFactory$1.run(AutomaticWorkQueueImpl.java:353) > > at java.lang.Thread.run(Thread.java:744) > > Caused by: java.lang.ClassCastException: > pt.uninova.proseco.services.jaxws_asm.MypingWebServiceResponse cannot be > cast to pt.uninova.proseco.services.async.response.MypingMessage > > at > > pt.uninova.proseco.services.async.TestAsyncHandler.handleResponse(TestAsyncHandler.java:27) > > at > > org.apache.cxf.jaxws.JaxwsClientCallback.handleResponse(JaxwsClientCallback.java:44) > > at > org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:819) > > ... 7 more > > > > Exception in thread "main" java.lang.NullPointerException > > at > > pt.uninova.proseco.services.async.TestAsyncHandler.getResponse(TestAsyncHandler.java:34) > > at > > pt.uninova.proseco.async.AsyncTestMainClass.main(AsyncTestMainClass.java:51) > > > > Basically I have a cast exception here: > > > > public class TestAsyncHandler implements AsyncHandler<MypingResponse> { > > > > private MypingResponse reply; > > > > @Override > > public void handleResponse(Response<MypingResponse> rspns) { > > try { > > System.err.println("handleResponse called"); > > reply = rspns.get(); > > } catch (InterruptedException | ExecutionException ex) { > > > Logger.getLogger(TestAsyncHandler.class.getName()).log(Level.SEVERE, null, > ex); > > } > > } > > > > public String getResponse() { > > return reply.getTestValue(); > > } > > > > } > > > > Any suggestion? > > > > BR, > > > > Giovanni > > > > De: André Costa Lima [via CXF] [mailto:[hidden email]] > Enviada: 7 de janeiro de 2015 13:46 > Para: gido > Assunto: Re: Async Calls > > > > I think your class is malformed, i.e., there are missing annotations. > > Take some time to read this > < > http://cxf.apache.org/docs/developing-a-service.html#DevelopingaService-JavaFirstDevelopment > >. > The documentation shows and explains how to use the annotations and what > they do. > > As for the asynchronous methods, in addition to the callback method > > public Future<?> MypingAsync(String par, AsyncHandler<MypingResponse> > asyncHandler); > > you need to define the polling method > > public Response<MypingResponse> MypingAsync(String par); > > in your SEI as well. However, you do not need to implement it because it > will never be called but the client can use it. You can read more about the > asynchronous invocation model here > < > http://cxf.apache.org/docs/developing-a-consumer.html#DevelopingaConsumer-AsynchronousInvocationModel > > > . > > On a different note, I do now know how CXF handles interface extension for > SEIs, such as you define below > > public interface IAmIMonitoringService extends IProsecoService > > Maybe a developer can answer that. > > Hope this helps. :) > > André Costa Lima > > > 2015-01-07 10:52 GMT+00:00 gido <[hidden email]>: > > > > Hi André, > > > > > > > > Here you can find the SEI and its implementation: > > > > > > > > @WebService > > > > @SOAPBinding(style = SOAPBinding.Style.DOCUMENT) > > > > public interface IProsecoService { > > > > > > > > @WebMethod(operationName = "startWebService") > > > > public void start(); > > > > > > > > @WebMethod(operationName = "stopWebService") > > > > public void stop(); > > > > > > > > @WebMethod(operationName = "restartWebService") > > > > public void restart(); > > > > > > > > @WebMethod(operationName = "pingWebService") > > > > public String ping(); > > > > > > > > @WebMethod(operationName = "invokeWebService") > > > > public boolean configure(String Configuration); > > > > > > > > } > > > > > > > > @WebService(name = "AmIMonitoringService", targetNamespace = " > > http://proseco-project.eu/") > > > > @SOAPBinding(style = SOAPBinding.Style.DOCUMENT) > > > > public interface IAmIMonitoringService extends IProsecoService { > > > > > > > > @WebMethod(operationName = "MypingWebService") > > > > public String Myping(String par); > > > > > > > > @WebMethod(operationName = "MypingWebService") > > > > @ResponseWrapper(localName = "MypingResponse", className = > > "pt.uninova.proseco.services.async.response.MypingResponse") > > > > public Future<?> MypingAsync(String par, AsyncHandler<MypingResponse> > > asyncHandler); > > > > > > > > } > > > > > > > > public class AmIMonitoringService implements IAmIMonitoringService { > > > > > > > > private static final Logger logger = > > LoggerFactory.getLogger(AmIMonitoringService.class); > > > > > > > > @Override > > > > public void start() throws ProsecoFault { > > > > logger.info(String.format("Starting %s ...", > > this.getClass().getSimpleName())); > > > > } > > > > > > > > @Override > > > > public void stop() throws ProsecoFault { > > > > logger.info(String.format("Stopping %s ...", > > this.getClass().getSimpleName())); > > > > } > > > > > > > > @Override > > > > public void restart() throws ProsecoFault { > > > > logger.info(String.format("Restarting %s ...", > > this.getClass().getSimpleName())); > > > > } > > > > > > > > @Override > > > > public String ping() throws ProsecoFault { > > > > logger.info(String.format("%s was pinged", > > this.getClass().getSimpleName())); > > > > return ServiceManager.PING_RESPONSE; > > > > } > > > > > > > > @Override > > > > public boolean configure(String Configuration) throws ProsecoFault { > > > > throw new UnsupportedOperationException("Not supported yet."); > > //To change body of generated methods, choose Tools | Templates. > > > > } > > > > > > > > @Override > > > > public Future<?> MypingAsync(final String par, final > > AsyncHandler<MypingResponse> asyncHandler) { > > > > System.out.println("Executing operation changeStudentAsync > > asynchronously\n"); > > > > final ServerAsyncResponse<MypingResponse> asyncResponse = new > > ServerAsyncResponse<MypingResponse>(); > > > > new Thread() { > > > > @Override > > > > public void run() { > > > > try { > > > > Thread.sleep(10000); > > > > } catch (InterruptedException e) { > > > > } > > > > MypingResponse resp = new MypingResponse(); > > > > resp.setTestValue("Ola " + par); > > > > asyncResponse.set(resp); > > > > System.out.println("Responding on background thread\n"); > > > > asyncHandler.handleResponse(asyncResponse); > > > > } > > > > }.start(); > > > > > > > > return asyncResponse; > > > > } > > > > > > > > @Override > > > > public String Myping(String par) { > > > > throw new UnsupportedOperationException("Not supported yet."); > > //To change body of generated methods, choose Tools | Templates. > > > > } > > > > > > > > } > > > > > > > > - Client code: > > > > IAmIMonitoringService client = ServiceManager.getWebservice("localhost", > > Integer.parseInt("19004"), IAmIMonitoringService.class); > > > > String pong = client.ping(); > > > > TestAsyncHandler handler = new TestAsyncHandler(); > > > > Future<?> response = client.MypingAsync("Giovanni", handler); > > > > while (!response.isDone()) { > > > > Thread.sleep(100); > > > > } > > > > > > > > > > > > public class TestAsyncHandler implements AsyncHandler<MypingResponse> { > > > > > > > > private MypingResponse reply; > > > > > > > > @Override > > > > public void handleResponse(Response<MypingResponse> rspns) { > > > > try { > > > > System.err.println("handleResponse called"); > > > > reply = rspns.get(); > > > > } catch (InterruptedException | ExecutionException ex) { > > > > > > Logger.getLogger(TestAsyncHandler.class.getName()).log(Level.SEVERE, > null, > > ex); > > > > } > > > > } > > > > > > > > public String getResponse() { > > > > return reply.getTestValue(); > > > > } > > > > > > > > } > > > > > > > > I hope this can help. > > > > > > > > BR, > > > > > > > > Giovanni > > > > > > > > De: André Costa Lima [via CXF] [mailto: > > [hidden email]] > > Enviada: 7 de janeiro de 2015 00:30 > > Para: gido > > Assunto: Re: Async Calls > > > > > > > > Hi, > > > > Can you provide the code of your SEI class? > > > > Thanks. > > > > André Costa Lima > > > > > > 2015-01-06 23:41 GMT+00:00 gido <[hidden email]>: > > > > > > > Dear all, > > > > > > I have a little problem with the async communication. In particular I > am > > > trying to implement async calls. My idea is to provide a synchronous > > method > > > as well as its async implementation. In such a way I can decide which > > > method > > > is suitable for me according to the specific application context. To do > > > that, I have followed the Apache CXF documentation and the tutorials: > > > > > > > http://www.javatips.net/blog/2014/03/asynchronous-web-service-using-cxf > > > http://www.javatips.net/blog/2014/03/cxf-asynchronous-client > > > > > > However when I try to call the async method I always receive the > > following > > > exception: > > > > > > Exception in thread "main" javax.xml.ws.WebServiceException: Could not > > find > > > wsdl:binding operation info for web method testAsync. > > > at > > > org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:126) > > > at com.sun.proxy.$Proxy62.testAsync(Unknown Source) > > > at > > > > > > > > > pt.uninova.proseco.async.AsyncTestMainClass.main(AsyncTestMainClass.java:46) > > > > > > If I try to call the synch implmentation I have no problem. > > > > > > I have checked the generated wsdl (I am using the Java first approach) > > and > > > I > > > see that no async operation is included. > > > > > > Do you have any sugestion? > > > > > > BR > > > > > > Giovanni > > > > > > > > > > > > -- > > > View this message in context: > > > http://cxf.547215.n5.nabble.com/Async-Calls-tp5752830.html > > > Sent from the cxf-user mailing list archive at Nabble.com. > > > > > > > > > > > _____ > > > > If you reply to this email, your message will be added to the discussion > > below: > > > > http://cxf.547215.n5.nabble.com/Async-Calls-tp5752830p5752832.html > > > > To unsubscribe from Async Calls, click here < > > > > . > > < > > > http://cxf.547215.n5.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml > > > > NAML > > > > > > > > > > > > -- > > View this message in context: > > http://cxf.547215.n5.nabble.com/Async-Calls-tp5752830p5752839.html > > Sent from the cxf-user mailing list archive at Nabble.com. > > > ... [show rest of quote] > > > If you reply to this email, your message will be added to the discussion > below: > > http://cxf.547215.n5.nabble.com/Async-Calls-tp5752830p5752842.html > http://www.chaussurespas-fr.com/ > To unsubscribe from Async Calls, click here. > > NAML > > > > ----- > www.chaussurespas-fr.com > -- > View this message in context: > http://cxf.547215.n5.nabble.com/Async-Calls-tp5752830p5753384.html > Sent from the cxf-user mailing list archive at Nabble.com. >
