>
> org.apache.axis2.AxisFault: validation failed error with complete stack
> trace. And its printing again and again.
Thats correct right?
Because whenever message comes to the server it sends a fault, so client
keeps on getting faults. The solution would be do have some condition in
the in-flow handler and throw the exception only if something went wrong.
> this is becuase we are engaging
> sandesha and its not getting acknowledge thats why its sending teh request
> again and again. How to stop this and send the fault response to client.
> Please help me.
>
I think you might have put the handler in the wrong place, how about
putting the handler after the sandesha handlers ?
Deepal
> Thanks,
> Swapna Soni.
>
>
> Deepal Jayasinghe-2 wrote:
>
>> As I can see the problem is, in the faultflow you abort the execution,
>> so you get such an error. try to use two handlers for in-flow and
>> fault-flow
>>
>> Deepal
>>
>>> Hi Amila,
>>>
>>> I have written the below code in handler this time.
>>>
>>> public InvocationResponse invoke(MessageContext msgContext) throws
>>> AxisFault {
>>> if(msgContext.getFLOW()==1)
>>> {
>>> throw new AxisFault("validation failed error");
>>> }
>>> return InvocationResponse.ABORT;
>>> }
>>> Now when i am running the client, i am getting the below exception
>>> instead
>>> of fault response message.
>>>
>>> org.apache.axis2.AxisFault: First Element must contain the local name,
>>> Envelope , but found html
>>> at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
>>> at
>>> org.apache.axis2.transport.TransportUtils.createSOAPMessage(TransportUtils.java:90)
>>> at
>>> org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:353)
>>> 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)
>>> Caused by: org.apache.axiom.soap.SOAPProcessingException: First Element
>>> must
>>> contain the local name, Envelope , but found html
>>> at
>>> org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.constructNode(StAXSOAPModelBuilder.java:251)
>>> at
>>> org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.createOMElement(StAXSOAPModelBuilder.java:209)
>>> at
>>> org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.createNextOMElement(StAXSOAPModelBuilder.java
>>>
>>> Thanks,
>>> Swapna Soni.
>>>
>>>
>>> Amila Suriarachchi wrote:
>>>
>>>
>>>> On Thu, May 14, 2009 at 11:47 AM, Senthil Sona <[email protected]> wrote:
>>>>
>>>>
>>>>
>>>>> Hi Amila,
>>>>>
>>>>> I have set the written the below code in my custom module.
>>>>>
>>>>> public InvocationResponse invoke(MessageContext msgContext)
>>>>> throws
>>>>> AxisFault {
>>>>> if(msgContext.getFLOW()==1)
>>>>> {
>>>>> MessageContext faultContext =
>>>>>
>>>>> MessageContextBuilder.createFaultMessageContext(msgContext, new
>>>>> AxisFault("validation failed error", new QName("validation error",
>>>>> "wsa")));
>>>>> AxisEngine.sendFault(faultContext);
>>>>>
>>>>>
>>>>>
>>>> here as I told you earlier try to throw the AxisFault()
>>>>
>>>> i.e throw new AxisFault("validation error");
>>>>
>>>> then the fault sending part is done at the transport level.
>>>>
>>>> thanks,
>>>> Amila.
>>>>
>>>>
>>>>
>>>>> }
>>>>> return InvocationResponse.ABORT;
>>>>> }
>>>>>
>>>>> But when running the client program i am getting error at client
>>>>> console
>>>>> like
>>>>>
>>>>> org.apache.axis2.AxisFault: The input stream for an incoming message is
>>>>> null.
>>>>> at
>>>>>
>>>>> org.apache.axis2.transport.TransportUtils.createSOAPMessage(TransportUtils.java:72)
>>>>> at
>>>>>
>>>>> org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:353)
>>>>> 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)
>>>>>
>>>>> For outFaultFlow i am calling same handler and wrote the code like
>>>>>
>>>>> if(msgContext.getFLOW()==4) {
>>>>> System.out.println("This is OutFaultFlow");
>>>>> System.out.println("
>>>>> messagecontext=="+msgContext.getEnvelope());
>>>>> }
>>>>> So its printing the fault soap resonse
>>>>>
>>>>> <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:s
>>>>> oapenv="http://www.w3.org/2003/05/soap-envelope
>>>>> "><soapenv:Body><soapenv:Fault
>>>>> xm
>>>>> lns:axis2ns5="validation
>>>>> error"><soapenv:Code><soapenv:Value>axis2ns5:wsa</soape
>>>>> nv:Value></soapenv:Code><soapenv:Reason><soapenv:Text
>>>>> xml:lang="en-US">validatio
>>>>> n failed error</soapenv:Text></soapenv:Reason><soapenv:Detail
>>>>> /></soapenv:Fault>
>>>>> </soapenv:Body></soapenv:Envelope>
>>>>>
>>>>> I want this response should be printed at client console. How can i do
>>>>> this,
>>>>> please help me. Its stopping our productivity.
>>>>>
>>>>> I have uploaded the Handler class and client class. Could you please
>>>>> have
>>>>> a
>>>>> webex session with us. So that we can show you our complete code and
>>>>> how
>>>>> the
>>>>> program is behaving when we run the client. It will help us to resolve
>>>>> the
>>>>> problem soon.
>>>>>
>>>>> Thanks,
>>>>> Swapna Soni.
>>>>>
>>>>>
>>>>> Amila Suriarachchi wrote:
>>>>>
>>>>>
>>>>>> On Wed, May 13, 2009 at 8:48 PM, Senthil Sona <[email protected]>
>>>>>> wrote:
>>>>>>
>>>>>>
>>>>>>
>>>>>>> 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);
>>>>>>>
>>>>>>>
>>>>>> it is bit difficult to answer your question without looking all your
>>>>>>
>>>>>>
>>>>> code.
>>>>>
>>>>>
>>>>>> But try this.
>>>>>>
>>>>>>
>>>>>> if you want to send a soap fault to client side, throw an AxisFault
>>>>>>
>>>>>>
>>>>> here.
>>>>>
>>>>>
>>>>>> When you throw an AxisFault it is caught at the transport level and it
>>>>>> sends
>>>>>> the fault message by calling to fault flow.
>>>>>>
>>>>>> if you want to send a normal soap message do this,
>>>>>>
>>>>>> MessageContext outMsgContext =
>>>>>> MessageContextBuilder.createOutMessageContext(msgContext);
>>>>>> AxisEngine.send(outMsgContext);
>>>>>> return InvocationResponse.ABORT
>>>>>>
>>>>>> here it is important to return InvocationResponse.ABORT to terminate
>>>>>>
>>>>>>
>>>>> the
>>>>>
>>>>>
>>>>>> inFlow.
>>>>>>
>>>>>> thanks,
>>>>>> Amila.
>>>>>>
>>>>>>
>>>>>>
>>>>>>> }
>>>>>>>
>>>>>>> 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==<?xml version='1.0'
>>>>>>>
>>>>>>>
>>>>> encoding='utf-8'?><soapenv:Envelope
>>>>>
>>>>>
>>>>>>> xmlns:s
>>>>>>> oapenv="http://www.w3.org/2003/05/soap-envelope
>>>>>>> "><soapenv:Body><soapenv:Fault
>>>>>>> xm
>>>>>>> lns:axis2ns5="validation
>>>>>>> error"><soapenv:Code><soapenv:Value>axis2ns5:wsa</soape
>>>>>>> nv:Value></soapenv:Code><soapenv:Reason><soapenv:Text
>>>>>>> xml:lang="en-US">validatio
>>>>>>> n failed error</soapenv:Text></soapenv:Reason><soapenv:Detail
>>>>>>> /></soapenv:Fault>
>>>>>>> </soapenv:Body></soapenv:Envelope>
>>>>>>>
>>>>>>> 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.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>> --
>>>>>> Amila Suriarachchi
>>>>>> WSO2 Inc.
>>>>>> blog: http://amilachinthaka.blogspot.com/
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>> http://www.nabble.com/file/p23534995/LogHandler.java LogHandler.java
>>>>> http://www.nabble.com/file/p23534995/client.java client.java
>>>>> --
>>>>> View this message in context:
>>>>> http://www.nabble.com/How-to-terminate-InFlow-and-start-OutFlow-in-the-custom-handler-of-axis2-tp23521710p23534995.html
>>>>> Sent from the Axis - Dev mailing list archive at Nabble.com.
>>>>>
>>>>>
>>>>>
>>>>>
>>>> --
>>>> Amila Suriarachchi
>>>> WSO2 Inc.
>>>> blog: http://amilachinthaka.blogspot.com/
>>>>
>>>>
>>>>
>>>>
>>>
>>>
>> --
>> Thank you!
>>
>>
>> http://blogs.deepal.org
>> http://deepal.org
>>
>>
>>
>>
>
>
--
Thank you!
http://blogs.deepal.org
http://deepal.org