Return-Path: Delivered-To: apmail-ws-axis-dev-archive@www.apache.org Received: (qmail 43053 invoked from network); 13 May 2009 15:19:19 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 13 May 2009 15:19:19 -0000 Received: (qmail 52710 invoked by uid 500); 13 May 2009 15:19:19 -0000 Delivered-To: apmail-ws-axis-dev-archive@ws.apache.org Received: (qmail 52622 invoked by uid 500); 13 May 2009 15:19:18 -0000 Mailing-List: contact axis-dev-help@ws.apache.org; run by ezmlm Precedence: bulk Reply-To: axis-dev@ws.apache.org list-help: list-unsubscribe: List-Post: List-Id: Delivered-To: mailing list axis-dev@ws.apache.org Received: (qmail 52613 invoked by uid 99); 13 May 2009 15:19:18 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 13 May 2009 15:19:18 +0000 X-ASF-Spam-Status: No, hits=-0.0 required=10.0 tests=SPF_HELO_PASS,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of lists@nabble.com designates 216.139.236.158 as permitted sender) Received: from [216.139.236.158] (HELO kuber.nabble.com) (216.139.236.158) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 13 May 2009 15:19:06 +0000 Received: from isper.nabble.com ([192.168.236.156]) by kuber.nabble.com with esmtp (Exim 4.63) (envelope-from ) id 1M4GEH-00056X-H8 for axis-dev@ws.apache.org; Wed, 13 May 2009 08:18:45 -0700 Message-ID: <23523940.post@talk.nabble.com> Date: Wed, 13 May 2009 08:18:45 -0700 (PDT) From: Senthil Sona To: axis-dev@ws.apache.org Subject: Re: How to terminate InFlow and start OutFlow in the custom handler of axis2 In-Reply-To: <4A0ADEB5.3000402@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Nabble-From: swsoni@cisco.com References: <23521710.post@talk.nabble.com> <4A0AD1F6.4020708@gmail.com> <23523282.post@talk.nabble.com> <4A0ADEB5.3000402@gmail.com> X-Virus-Checked: Checked by ClamAV on apache.org Hi Deepal, I have added the code in the handler class like if(msgContext.getFLOW()==1) { logger.info("This is inFlow"); System.out.println("This is inFlow"); MessageContext faultContext = MessageContextBuilder.createFaultMessageContext(msgContext, new AxisFault("validation failed error", new QName("validation error", "wsa"))); AxisEngine.sendFault(faultContext); } I am using the same handler class for inflow and outfault flow thats why i am checking if(msgContext.getFLOW()==1). At client console i am getting error like org.apache.axis2.AxisFault: validation failed error at org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:512) at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:370) at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:416) at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:228) at org.apache.axis2.client.OperationClient.execute(OperationClient.java:163) at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:548) at org.apache.rahas.client.STSClient.requestSecurityToken(STSClient.java:127) at org.apache.rampart.util.RampartUtil.getToken(RampartUtil.java:486) at org.apache.rampart.util.RampartUtil.getSecConvToken(RampartUtil.java:396) at org.apache.rampart.builder.SymmetricBindingBuilder.initializeTokens(SymmetricBindingBuilder.java:670) at org.apache.rampart.builder.SymmetricBindingBuilder.build(SymmetricBindingBuilder.java:73) at org.apache.rampart.MessageBuilder.build(MessageBuilder.java:128) at org.apache.rampart.handler.RampartSender.invoke(RampartSender.java:64) at org.apache.axis2.engine.Phase.invoke(Phase.java:317) at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:264) at org.apache.axis2.engine.AxisEngine.resumeSend(AxisEngine.java:370) at org.apache.sandesha2.workers.SenderWorker.run(SenderWorker.java:287) at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1061) at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:575) at java.lang.Thread.run(Thread.java:735) and its keep on executing the handler, Because i am able to see the log message i am printing in inflow if condition again and again. I am printing the message context in OutFaultFlow. i am getting the message like This is OutFaultFlow messagecontext==axis2ns5:wsavalidatio n failed error Thanks, Swapna Soni. Deepal Jayasinghe-2 wrote: > > Try this, > > MessageContext faultContext = > MessageContextBuilder.createFaultMessageContext(messageCtx, e); > AxisEngine.sendFault(faultContext); > > - Deepal >> Hi Deepal, >> >> Thanks for your reply. If we set the AxisEngine.sendFault(msgContext) >> in >> inflow handler, it will execute the outFaultFlow but client program wotn >> get >> any response and we are getting org.apache.axis2.AxisFault: Read timed >> out >> exception. And its again and again executing the inflow handler. For >> testing >> purpose i have written >> if(msgContext.getFLOW()==1) >> { >> logger.info("This is inFlow"); >> } >> in the inFlowhandler class and its getting execute again and again. But >> i >> want it should get execute only once when request comes from client and >> it >> should do validation of that request message, if something is wrong then >> outflow or OutFaultFlow should get execute and send the proper error >> response to client and should get terminate there only. Once we get any >> validation error in inFlow handler, it should not process further engaged >> module and request should terminate in inFlow and from there client >> should >> get response via outFlow or outFaultFlow. >> >> We are engaging the sandesha and rampart from in the client program >> only. >> >> sender.engageModule("addressing"); >> sender.engageModule("sandesha2"); >> options.setProperty(SandeshaClientConstants.OFFERED_SEQUENCE_ID, >> "Yash_Seq"); >> sender.engageModule("rampart"); >> >> options.setProperty(RampartMessageData.KEY_RAMPART_POLICY, >> loadPolicy("C:/WS-X/misc/20090427/WTPTestRM2Client/WebContent/WEB-INF/conf/policy.xml")); >> >> Could you please let us know how to achieve this functionality. >> >> Thanks, >> Swapna Soni. >> >> Deepal Jayasinghe-2 wrote: >> >>> Behavior will be different based on the dispatch status, but you can >>> simply call. >>> >>> AxisEngine.sendFault(messageContext) >>> >>> Then it will send the fault >>> >>> - Deepal >>> >>>> Hi Axis Team, >>>> >>>> I have one very urgent requirement. One client program invokes the >>>> service in which sandesha, rampart and one custom module is engaged. In >>>> custom Inflow handler we do some validation. If something is wrong in >>>> that >>>> validation, then we want it to start the outFlow and send the custom >>>> response to client back without executing further engaged modules and >>>> without invoking service. >>>> >>>> Could anyone please tell me how can i do this using axis2 api. Its >>>> very >>>> very urgent requirement for us. >>>> >>>> Thanks, >>>> swapna soni >>>> >>>> >>> -- >>> Thank you! >>> >>> >>> http://blogs.deepal.org >>> http://deepal.org >>> >>> >>> >>> >> >> > > > -- > Thank you! > > > http://blogs.deepal.org > http://deepal.org > > > -- View this message in context: http://www.nabble.com/How-to-terminate-InFlow-and-start-OutFlow-in-the-custom-handler-of-axis2-tp23521710p23523940.html Sent from the Axis - Dev mailing list archive at Nabble.com.