I have implemented an Asynchronous web service call using the Call back
approach via an AsyncHandler. I have noticed an issue where the remote web
service is throwing a SOAPFaultException. The issue is the AsynHandler code
I wrote does not seem to catch the exception. In fact it never receives a
response at all. I am using Apache CXF 2.1.2 to generate the client side
code
How do I handle this accordingly???
Here is the code making the Asynchronous request ::
// Asynchronous WS callback approach
ServiceAsyncHandler serviceAsyncHandler = new
ServiceAsyncHandler(aSomeObject1, aSomeObject2);
Future<?> response = thePort.getAnalysisAsync(criteria,
serviceAsyncHandler);
Here is the AsyncHandler code ::
/**
* Aysynchronous KATDataService Handler
*/
public void handleResponse(Response response) {
try {
Object object = response.get();
this.analysis = (Analysis)object;
// Do some processing here on the response
} catch(SOAPFaultException ex) {
LOGGER.error("ERROR : KATDataServiceAsyncHandler", ex);
} catch (InterruptedException ex) {
LOGGER.error("ERROR : KATDataServiceAsyncHandler", ex);
} catch (ExecutionException ex) {
LOGGER.error("ERROR : KATDataServiceAsyncHandler", ex);
}
}
}
It also seems if I place a snippet of code after I make the Asynchronous
web service request like so ::
try {
response.isDone()
} catch(SOAPFaultException ex) {
LOGGER.error("ERROR : Calling Remote Web Service", ex);
}
It will catch the SOAPFaultExcpetion occasionally but not all the time so
this is not 100% reliable. I still have an issue where the
SOAPFaultExcpetion falls through the cracks and is not caught by either the
AsynchHandler or the code making the Asynchronous web service call.
Please can someone explain why this is and how I go about resolving this
issue.
-Kyle
13:03:04,062 ERROR [CommonClient] Exception caught while (preparing for) performing the
invocation:
javax.xml.ws.soap.SOAPFaultException: System.Web.Services.Protocols.SoapException: Server
was unable to process request. ---> TSAKeywordAnalysisServices.katAnalysisException:
KAT Data Service Exception: ---> System.Exception: Target Page URL did not have any
data.
at clsDataService.getKATAnalysis(KATAnalysisCriteria request) in c:\Hudson\jobs\KAT
Data Service\workspace\main\App_Code\clsDataService.cs:line 70
at KATDataService10.getKATAnalysis(KATAnalysisCriteria request) in c:\Hudson\jobs\KAT
Data Service\workspace\main\App_Code\KATDataService1.0.cs:line 27
--- End of inner exception stack trace ---
at KATDataService10.getKATAnalysis(KATAnalysisCriteria request) in c:\Hudson\jobs\KAT
Data Service\workspace\main\App_Code\KATDataService1.0.cs:line 32
--- End of inner exception stack trace ---
at
org.jboss.ws.core.jaxws.SOAPFaultHelperJAXWS.getSOAPFaultException(SOAPFaultHelperJAXWS.java:84)
at
org.jboss.ws.core.jaxws.binding.SOAP11BindingJAXWS.throwFaultException(SOAP11BindingJAXWS.java:107)
at org.jboss.ws.core.CommonSOAPBinding.unbindResponseMessage(CommonSOAPBinding.java:579)
at org.jboss.ws.core.CommonClient.invoke(CommonClient.java:381)
at org.jboss.ws.core.jaxws.client.ClientImpl.invoke(ClientImpl.java:290)
at org.jboss.ws.core.jaxws.client.ClientProxy.invoke(ClientProxy.java:170)
at org.jboss.ws.core.jaxws.client.ClientProxy.access$000(ClientProxy.java:60)
at org.jboss.ws.core.jaxws.client.ClientProxy$AsyncRunnable.run(ClientProxy.java:260)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:417)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:269)
at java.util.concurrent.FutureTask.run(FutureTask.java:123)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
at java.lang.Thread.run(Thread.java:595)
13:03:04,062 ERROR [ClientProxy] Cannot dispatch message
javax.xml.ws.soap.SOAPFaultException: System.Web.Services.Protocols.SoapException: Server
was unable to process request. ---> TSAKeywordAnalysisServices.katAnalysisException:
KAT Data Service Exception: ---> System.Exception: Target Page URL did not have any
data.
at clsDataService.getKATAnalysis(KATAnalysisCriteria request) in c:\Hudson\jobs\KAT
Data Service\workspace\main\App_Code\clsDataService.cs:line 70
at KATDataService10.getKATAnalysis(KATAnalysisCriteria request) in c:\Hudson\jobs\KAT
Data Service\workspace\main\App_Code\KATDataService1.0.cs:line 27
--- End of inner exception stack trace ---
at KATDataService10.getKATAnalysis(KATAnalysisCriteria request) in c:\Hudson\jobs\KAT
Data Service\workspace\main\App_Code\KATDataService1.0.cs:line 32
--- End of inner exception stack trace ---
at
org.jboss.ws.core.jaxws.SOAPFaultHelperJAXWS.getSOAPFaultException(SOAPFaultHelperJAXWS.java:84)
at
org.jboss.ws.core.jaxws.binding.SOAP11BindingJAXWS.throwFaultException(SOAP11BindingJAXWS.java:107)
at org.jboss.ws.core.CommonSOAPBinding.unbindResponseMessage(CommonSOAPBinding.java:579)
at org.jboss.ws.core.CommonClient.invoke(CommonClient.java:381)
at org.jboss.ws.core.jaxws.client.ClientImpl.invoke(ClientImpl.java:290)
at org.jboss.ws.core.jaxws.client.ClientProxy.invoke(ClientProxy.java:170)
at org.jboss.ws.core.jaxws.client.ClientProxy.access$000(ClientProxy.java:60)
at org.jboss.ws.core.jaxws.client.ClientProxy$AsyncRunnable.run(ClientProxy.java:260)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:417)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:269)
at java.util.concurrent.FutureTask.run(FutureTask.java:123)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
at java.lang.Thread.run(Thread.java:595)
View the original post :
http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4238289#...
Reply to the post :
http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&a...