Hi all, What is the correct way of handling faults if the Remote Service becomes unavailable at some time when the Client tries to call the service.
For example, lets say the client and server are communicating and all is well, then at some time later the Remote Service is "turned off" (or address was changed). After reading the CXF guide(http://cwiki.apache.org/CXF20DOC/interceptors.html) an Interceptor seems the correct way to handle if a fault is thrown, which is what happens when I turn off the remote service, and then try to make a call from the client. Fault thrown is: INFO: Interceptor has thrown exception, unwinding now org.apache.cxf.interceptor.Fault: Could not send Message. at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndi ngInterceptor.handleMessage(MessageSenderInterceptor.java:64) Exception from client Proxy is: Throwable: java.lang.NoSuchMethodError: createFault Stack Trace: java.lang.NoSuchMethodError: createFault at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:15 1) So I inserted my own Interceptor and managed to register it to call my overridden handleFault(SoapMessage soapMessage) method: My Interceptor: public class CannotInvokeMethodInterceptor extends AbstractSoapInterceptor { public CannotInvokeMethodInterceptor(){ super (Phase.SETUP); getBefore().add(MessageSenderInterceptor.class.getName()); System.out.println("Inside the method of Interceptor"); } @Override public void handleFault(SoapMessage soapMessage) { System.out.println("\n\n\n"); System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZ"); System.out.println("Inside the handleFault method of Interceptor"); System.out.println("SOAP Message: " + soapMessage); } public void handleMessage(SoapMessage arg0) throws Fault { System.out.println("Inside the handleMessage method of Interceptor"); } } Registering my Interceptor on the Client: HelloWorld hwClient = (HelloWorld)ctx.getBean("client"); CannotInvokeMethodInterceptor interceptor = new CannotInvokeMethodInterceptor (); Client cxfClient = ClientProxy.getClient(hwClient); cxfClient.getOutInterceptors().add(interceptor); cxfClient.getOutFaultInterceptors().add(interceptor); QUESTION: What should I do inside the handleFault() method, which is being called? NOTE: I am using CXF 2.0.1, in conjunction with Spring. Thanks Michael Full Stacktrace: Inside the method of Interceptor Inside the handleMessage method of Interceptor 21/08/2007 14:08:19 org.apache.cxf.phase.PhaseInterceptorChain doIntercept INFO: Interceptor has thrown exception, unwinding now org.apache.cxf.interceptor.Fault: Could not send Message. at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndi ngInterceptor.handleMessage(MessageSenderInterceptor.java:64) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseIntercept orChain.java:207) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:255) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:206) at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73) at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:13 5) at $Proxy53.sayHi(Ljava.lang.String;)Ljava.lang.String;(Unknown Source) at com.axa.wsclient.helloWorld.HelloWorldController.helloWorldAction(Hel loWorldController.java:55) at jrockit.reflect.VirtualNativeMethodInvoker.invoke(Ljava.lang.Object;[ Ljava.lang.Object;)Ljava.lang.Object;(Unknown Source) at java.lang.reflect.Method.invoke(Ljava.lang.Object;[Ljava.lang.Object; I)Ljava.lang.Object;(Unknown Source) at org.apache.beehive.netui.pageflow.FlowController.invokeActionMethod(F lowController.java:869) at org.apache.beehive.netui.pageflow.FlowController.getActionMethodForwa rd(FlowController.java:808) at org.apache.beehive.netui.pageflow.FlowController.internalExecute(Flow Controller.java:477) at org.apache.beehive.netui.pageflow.PageFlowController.internalExecute( PageFlowController.java:305) at org.apache.beehive.netui.pageflow.FlowController.execute(FlowControll er.java:335) at org.apache.beehive.netui.pageflow.internal.FlowControllerAction.execu te(FlowControllerAction.java:51) at org.apache.struts.action.RequestProcessor.processActionPerform(Reques tProcessor.java:419) at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.access$201 (PageFlowRequestProcessor.java:95) at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor$ActionRunn er.execute(PageFlowRequestProcessor.java:2042) at org.apache.beehive.netui.pageflow.interceptor.action.internal.ActionI nterceptors$WrapActionInterceptorChain.continueChain(ActionInterceptors.java:63) at org.apache.beehive.netui.pageflow.interceptor.action.ActionIntercepto r.wrapAction(ActionInterceptor.java:167) at org.apache.beehive.netui.pageflow.interceptor.action.internal.ActionI nterceptors$WrapActionInterceptorChain.invoke(ActionInterceptors.java:49) at org.apache.beehive.netui.pageflow.interceptor.action.internal.ActionI nterceptors$WrapActionInterceptorChain.continueChain(ActionInterceptors.java:57) at org.apache.beehive.netui.pageflow.interceptor.action.internal.ActionI nterceptors.wrapAction(ActionInterceptors.java:86) at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.processAct ionPerform(PageFlowRequestProcessor.java:2114) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.ja va:224) at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.processInt ernal(PageFlowRequestProcessor.java:554) at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.process(Pa geFlowRequestProcessor.java:851) at org.apache.beehive.netui.pageflow.AutoRegisterActionServlet.process(A utoRegisterActionServlet.java:630) Caused by: java.net.SocketException: Socket Closed at java.net.PlainSocketImpl.setOption(PlainSocketImpl.java:201) at java.net.Socket.setTcpNoDelay(Socket.java:826) at weblogic.net.http.HttpClient.openServer(HttpClient.java:366) at weblogic.net.http.HttpClient.openServer(HttpClient.java:430) at weblogic.net.http.HttpClient.<init>(HttpClient.java:159) at weblogic.net.http.HttpClient.<init>(HttpClient.java:149) at weblogic.net.http.HttpClient.New(HttpClient.java:265) at weblogic.net.http.HttpURLConnection.connect(HttpURLConnection.java:17 0) at weblogic.net.http.HttpURLConnection.getInputStream(HttpURLConnection. java:362) at weblogic.net.http.SOAPHttpURLConnection.getInputStream(SOAPHttpURLCon nection.java:36) at weblogic.net.http.HttpURLConnection.getResponseCode(HttpURLConnection .java:963) at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleR esponse(HTTPConduit.java:1824) at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(H TTPConduit.java:1751) at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:6 6) at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:573) at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndi ngInterceptor.handleMessage(MessageSenderInterceptor.java:62) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseIntercept orChain.java:207) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:255) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:206) at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73) at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:13 5) at $Proxy53.sayHi(Ljava.lang.String;)Ljava.lang.String;(Unknown Source) at com.axa.wsclient.helloWorld.HelloWorldController.helloWorldAction(Hel loWorldController.java:55) at jrockit.reflect.VirtualNativeMethodInvoker.invoke(Ljava.lang.Object;[ Ljava.lang.Object;)Ljava.lang.Object;(Unknown Source) at java.lang.reflect.Method.invoke(Ljava.lang.Object;[Ljava.lang.Object; I)Ljava.lang.Object;(Unknown Source) at org.apache.beehive.netui.pageflow.FlowController.invokeActionMethod(F lowController.java:869) at org.apache.beehive.netui.pageflow.FlowController.getActionMethodForwa rd(FlowController.java:808) at org.apache.beehive.netui.pageflow.FlowController.internalExecute(Flow Controller.java:477) at org.apache.beehive.netui.pageflow.PageFlowController.internalExecute( PageFlowController.java:305) ZZZZZZZZZZZZZZZZZZZZZZZZZZZ Inside the handleFault method of Interceptor SOAP Message: [EMAIL PROTECTED] <21/08/2007 02:08:19 PM EST> <Error> <org.apache.beehive.netui.pageflow.internal .DefaultExceptionsHandler> <000000> <Throwable java.lang.NoSuchMethodError unhan dled by the current page flow (and any shared flow) Throwable: java.lang.NoSuchMethodError: createFault Stack Trace: java.lang.NoSuchMethodError: createFault at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:15 1) at $Proxy53.sayHi(Ljava.lang.String;)Ljava.lang.String;(Unknown Source) at com.axa.wsclient.helloWorld.HelloWorldController.helloWorldAction(Hel loWorldController.java:55) at jrockit.reflect.VirtualNativeMethodInvoker.invoke(Ljava.lang.Object;[ Ljava.lang.Object;)Ljava.lang.Object;(Unknown Source) at java.lang.reflect.Method.invoke(Ljava.lang.Object;[Ljava.lang.Object; I)Ljava.lang.Object;(Unknown Source) at org.apache.beehive.netui.pageflow.FlowController.invokeActionMethod(F lowController.java:869) at org.apache.beehive.netui.pageflow.FlowController.getActionMethodForwa rd(FlowController.java:808) at org.apache.beehive.netui.pageflow.FlowController.internalExecute(Flow Controller.java:477) at org.apache.beehive.netui.pageflow.PageFlowController.internalExecute( PageFlowController.java:305) at org.apache.beehive.netui.pageflow.FlowController.execute(FlowControll er.java:335) at org.apache.beehive.netui.pageflow.internal.FlowControllerAction.execu te(FlowControllerAction.java:51) at org.apache.struts.action.RequestProcessor.processActionPerform(Reques tProcessor.java:419) at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.access$201 (PageFlowRequestProcessor.java:95) at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor$ActionRunn er.execute(PageFlowRequestProcessor.java:2042) at org.apache.beehive.netui.pageflow.interceptor.action.internal.ActionI nterceptors$WrapActionInterceptorChain.continueChain(ActionInterceptors.java:63) at org.apache.beehive.netui.pageflow.interceptor.action.ActionIntercepto r.wrapAction(ActionInterceptor.java:167) at org.apache.beehive.netui.pageflow.interceptor.action.internal.ActionI nterceptors$WrapActionInterceptorChain.invoke(ActionInterceptors.java:49) at org.apache.beehive.netui.pageflow.interceptor.action.internal.ActionI nterceptors$WrapActionInterceptorChain.continueChain(ActionInterceptors.java:57) at org.apache.beehive.netui.pageflow.interceptor.action.internal.ActionI nterceptors.wrapAction(ActionInterceptors.java:86) at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.processAct ionPerform(PageFlowRequestProcessor.java:2114) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.ja va:224) at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.processInt ernal(PageFlowRequestProcessor.java:554) at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.process(Pa geFlowRequestProcessor.java:851) at org.apache.beehive.netui.pageflow.AutoRegisterActionServlet.process(A utoRegisterActionServlet.java:630) at org.apache.beehive.netui.pageflow.PageFlowActionServlet.process(PageF lowActionServlet.java:157) at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414) at org.apache.beehive.netui.pageflow.PageFlowUtils.strutsLookup(PageFlow Utils.java:1169) at com.bea.portlet.adapter.scopedcontent.ScopedContentCommonSupport.exec uteAction(ScopedContentCommonSupport.java:688) at com.bea.portlet.adapter.scopedcontent.ScopedContentCommonSupport.proc essActionInternal(ScopedContentCommonSupport.java:144) > <21/08/2007 02:08:19 PM EST> <Error> <org.apache.beehive.netui.pageflow.internal .DefaultExceptionsHandler> <000000> <Unhandled Page Flow Exception Throwable: java.lang.NoSuchMethodError: createFault Stack Trace: java.lang.NoSuchMethodError: createFault at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:15 1) at $Proxy53.sayHi(Ljava.lang.String;)Ljava.lang.String;(Unknown Source) at com.axa.wsclient.helloWorld.HelloWorldController.helloWorldAction(Hel loWorldController.java:55) at jrockit.reflect.VirtualNativeMethodInvoker.invoke(Ljava.lang.Object;[ Ljava.lang.Object;)Ljava.lang.Object;(Unknown Source) at java.lang.reflect.Method.invoke(Ljava.lang.Object;[Ljava.lang.Object; I)Ljava.lang.Object;(Unknown Source) at org.apache.beehive.netui.pageflow.FlowController.invokeActionMethod(F lowController.java:869) at org.apache.beehive.netui.pageflow.FlowController.getActionMethodForwa rd(FlowController.java:808) at org.apache.beehive.netui.pageflow.FlowController.internalExecute(Flow Controller.java:477) at org.apache.beehive.netui.pageflow.PageFlowController.internalExecute( PageFlowController.java:305) at org.apache.beehive.netui.pageflow.FlowController.execute(FlowControll er.java:335) at org.apache.beehive.netui.pageflow.internal.FlowControllerAction.execu te(FlowControllerAction.java:51) at org.apache.struts.action.RequestProcessor.processActionPerform(Reques tProcessor.java:419) at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.access$201 (PageFlowRequestProcessor.java:95) at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor$ActionRunn er.execute(PageFlowRequestProcessor.java:2042) at org.apache.beehive.netui.pageflow.interceptor.action.internal.ActionI nterceptors$WrapActionInterceptorChain.continueChain(ActionInterceptors.java:63) at org.apache.beehive.netui.pageflow.interceptor.action.ActionIntercepto r.wrapAction(ActionInterceptor.java:167) at org.apache.beehive.netui.pageflow.interceptor.action.internal.ActionI nterceptors$WrapActionInterceptorChain.invoke(ActionInterceptors.java:49) at org.apache.beehive.netui.pageflow.interceptor.action.internal.ActionI nterceptors$WrapActionInterceptorChain.continueChain(ActionInterceptors.java:57) at org.apache.beehive.netui.pageflow.interceptor.action.internal.ActionI nterceptors.wrapAction(ActionInterceptors.java:86) at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.processAct ionPerform(PageFlowRequestProcessor.java:2114) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.ja va:224) at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.processInt ernal(PageFlowRequestProcessor.java:554) at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.process(Pa geFlowRequestProcessor.java:851) at org.apache.beehive.netui.pageflow.AutoRegisterActionServlet.process(A utoRegisterActionServlet.java:630) at org.apache.beehive.netui.pageflow.PageFlowActionServlet.process(PageF lowActionServlet.java:157) at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414) at org.apache.beehive.netui.pageflow.PageFlowUtils.strutsLookup(PageFlow Utils.java:1169) at com.bea.portlet.adapter.scopedcontent.ScopedContentCommonSupport.exec uteAction(ScopedContentCommonSupport.java:688) at com.bea.portlet.adapter.scopedcontent.ScopedContentCommonSupport.proc essActionInternal(ScopedContentCommonSupport.java:144) > <21/08/2007 02:08:19 PM EST> <Error> <netuix> <BEA-423147> <Exception [com.bea.p ortlet.adapter.scopedcontent.ActionLookupFailedException: java.lang.NoSuchMethod Error: createFault] thrown while trying to do task [handlePostbackData] in class [com.bea.netuix.servlets.controls.content.PageFlowContent]. com.bea.portlet.adapter.scopedcontent.ActionLookupFailedException: java.lang.NoS uchMethodError: createFault at com.bea.portlet.adapter.scopedcontent.ScopedContentCommonSupport.exec uteAction(ScopedContentCommonSupport.java:699) at com.bea.portlet.adapter.scopedcontent.ScopedContentCommonSupport.proc essActionInternal(ScopedContentCommonSupport.java:144) at com.bea.portlet.adapter.scopedcontent.PageFlowStubImpl.processAction( PageFlowStubImpl.java:107) at com.bea.portlet.adapter.NetuiActionHandler.raiseScopedAction(NetuiAct ionHandler.java:99) at com.bea.netuix.servlets.controls.content.NetuiContent.raiseScopedActi on(NetuiContent.java:180) Truncated. see log file for complete stacktrace java.lang.NoSuchMethodError: createFault at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:15 1) at $Proxy53.sayHi(Ljava.lang.String;)Ljava.lang.String;(Unknown Source) at com.axa.wsclient.helloWorld.HelloWorldController.helloWorldAction(Hel loWorldController.java:55) at jrockit.reflect.VirtualNativeMethodInvoker.invoke(Ljava.lang.Object;[ Ljava.lang.Object;)Ljava.lang.Object;(Unknown Source) at java.lang.reflect.Method.invoke(Ljava.lang.Object;[Ljava.lang.Object; I)Ljava.lang.Object;(Unknown Source) Truncated. see log file for complete stacktrace > <21/08/2007 02:08:19 PM EST> <Error> <netuix> <BEA-423405> <An exception [java.l ang.NoSuchMethodError: createFault] was thrown while rendering the content at [/ com/axa/wsclient/helloWorld/HelloWorldController.jpf]. com.bea.portlet.adapter.scopedcontent.ActionLookupFailedException: java.lang.NoS uchMethodError: createFault at com.bea.portlet.adapter.scopedcontent.ScopedContentCommonSupport.exec uteAction(ScopedContentCommonSupport.java:699) at com.bea.portlet.adapter.scopedcontent.ScopedContentCommonSupport.proc essActionInternal(ScopedContentCommonSupport.java:144) at com.bea.portlet.adapter.scopedcontent.PageFlowStubImpl.processAction( PageFlowStubImpl.java:107) at com.bea.portlet.adapter.NetuiActionHandler.raiseScopedAction(NetuiAct ionHandler.java:99) at com.bea.netuix.servlets.controls.content.NetuiContent.raiseScopedActi on(NetuiContent.java:180) Truncated. see log file for complete stacktrace java.lang.NoSuchMethodError: createFault at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:15 1) at $Proxy53.sayHi(Ljava.lang.String;)Ljava.lang.String;(Unknown Source) at com.axa.wsclient.helloWorld.HelloWorldController.helloWorldAction(Hel loWorldController.java:55) at jrockit.reflect.VirtualNativeMethodInvoker.invoke(Ljava.lang.Object;[ Ljava.lang.Object;)Ljava.lang.Object;(Unknown Source) at java.lang.reflect.Method.invoke(Ljava.lang.Object;[Ljava.lang.Object; I)Ljava.lang.Object;(Unknown Source) Truncated. see log file for complete stacktrace > <21/08/2007 02:08:19 PM EST> <Error> <netuix> <BEA-423137> <There was an error l oading the requested URI /com/axa/wsclient/helloWorld/HelloWorldController.jpf.> <21/08/2007 02:08:19 PM EST> <Error> <netuix> <BEA-423223> <There was an error w hile running a lifecycle stage :: Lifecycle: UIControl.render :: for the control :: null ::. com.bea.netuix.nf.UIControlException: com.bea.portlet.adapter.scopedcontent.Acti onLookupFailedException: java.lang.NoSuchMethodError: createFault at com.bea.netuix.servlets.controls.content.PageFlowContent.checkPreRend erExceptions(PageFlowContent.java:130) at com.bea.netuix.servlets.controls.content.NetuiContent.beginRender(Net uiContent.java:339) at com.bea.netuix.nf.ControlLifecycle$7.visit(ControlLifecycle.java:486) at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWa lker.java:530) at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWa lker.java:541) Truncated. see log file for complete stacktrace com.bea.portlet.adapter.scopedcontent.ActionLookupFailedException: java.lang.NoS uchMethodError: createFault at com.bea.portlet.adapter.scopedcontent.ScopedContentCommonSupport.exec uteAction(ScopedContentCommonSupport.java:699) at com.bea.portlet.adapter.scopedcontent.ScopedContentCommonSupport.proc essActionInternal(ScopedContentCommonSupport.java:144) at com.bea.portlet.adapter.scopedcontent.PageFlowStubImpl.processAction( PageFlowStubImpl.java:107) at com.bea.portlet.adapter.NetuiActionHandler.raiseScopedAction(NetuiAct ionHandler.java:99) at com.bea.netuix.servlets.controls.content.NetuiContent.raiseScopedActi on(NetuiContent.java:180) Truncated. see log file for complete stacktrace java.lang.NoSuchMethodError: createFault at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:15 1) at $Proxy53.sayHi(Ljava.lang.String;)Ljava.lang.String;(Unknown Source) at com.axa.wsclient.helloWorld.HelloWorldController.helloWorldAction(Hel loWorldController.java:55) at jrockit.reflect.VirtualNativeMethodInvoker.invoke(Ljava.lang.Object;[ Ljava.lang.Object;)Ljava.lang.Object;(Unknown Source) at java.lang.reflect.Method.invoke(Ljava.lang.Object;[Ljava.lang.Object; I)Ljava.lang.Object;(Unknown Source) Truncated. see log file for complete stacktrace > -- View this message in context: http://www.nabble.com/Correct-Handling-%28on-Client%29-if-Remote-Service-becomes-unavailable---tf4303032.html#a12248303 Sent from the cxf-user mailing list archive at Nabble.com.
