[ 
https://issues.apache.org/jira/browse/AXIS2-5581?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Syed Ahmed Jeelani updated AXIS2-5581:
--------------------------------------

    Description: 
We are using IBM Tivoli Directory Integrator v7.1.1 to create a solution to 
call Remote Webservices. IBM TDI Web service suite uses the apache axis2 to 
invoke the webservices.

The requirement is such that, the web services is sending a response with a 
wsse:security header. I have developed a custom handler and used it in the 
InFlow PhaseOrder after the dispatch phase,(by creating a custom phase and 
adding the handler to it) of the axis2.xml file.

But during the, if the web service return a soap-fault, then the instead of the 
InfaultFlow phaseOrder, inFlow phaseOrder is being used.

<phaseOrder type="InFlow">
        <!--  System predefined phases       -->
        <phase name="Transport">
            <handler name="RequestURIBasedDispatcher"
                     
class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher">
                <order phase="Transport"/>
            </handler>
            <handler name="SOAPActionBasedDispatcher"
                     
class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher">
                <order phase="Transport"/>
            </handler>
        </phase>
        <phase name="Addressing">
            <handler name="AddressingBasedDispatcher"
                     
class="org.apache.axis2.dispatchers.AddressingBasedDispatcher">
                <order phase="Addressing"/>
            </handler>
        </phase>
        <phase name="Security"/>
        <phase name="PreDispatch"/>
        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
            <handler name="RequestURIBasedDispatcher"
                     
class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher"/>
            <handler name="SOAPActionBasedDispatcher"
                     
class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher"/>
            <handler name="RequestURIOperationDispatcher"
                     
class="org.apache.axis2.dispatchers.RequestURIOperationDispatcher"/>
            <handler name="SOAPMessageBodyBasedDispatcher"
                     
class="org.apache.axis2.dispatchers.SOAPMessageBodyBasedDispatcher"/>
            <handler name="HTTPLocationBasedDispatcher"
                     
class="org.apache.axis2.dispatchers.HTTPLocationBasedDispatcher"/>
            <handler name="GenericProviderDispatcher"
                     
class="org.apache.axis2.jaxws.dispatchers.GenericProviderDispatcher"/>
            <handler name="MustUnderstandValidationDispatcher"
                     
class="org.apache.axis2.jaxws.dispatchers.MustUnderstandValidationDispatcher"/>
        </phase>
        <phase name="RMPhase"/>
        <!--  System predefined phases       -->
                <phase name="CustomSoapHeaderValidation">
                        <handler name="SecurityHeaderValidator"
                     
class="com.test.service.phase.handler.SecurityHeaderHandler"/>
                </phase>
        <!--   After Postdispatch phase module author or service author can add 
any phase he want      -->
        <phase name="OperationInPhase">
            <handler name="MustUnderstandChecker"
                     
class="org.apache.axis2.jaxws.dispatchers.MustUnderstandChecker">
                <order phase="OperationInPhase"/>
            </handler>
        </phase>
        <phase name="soapmonitorPhase"/>
    </phaseOrder>
    <phaseOrder type="OutFlow">
        <!--      user can add his own phases to this area  -->
        <phase name="soapmonitorPhase"/>
        <phase name="OperationOutPhase"/>
        <!--system predefined phase-->
        <!--these phase will run irrespective of the service-->
        <phase name="RMPhase"/>
        <phase name="PolicyDetermination"/>
        <phase name="MessageOut"/>
        <phase name="Security"/>
    </phaseOrder>
    <phaseOrder type="InFaultFlow">
        <phase name="Addressing">
            <handler name="AddressingBasedDispatcher"
                     
class="org.apache.axis2.dispatchers.AddressingBasedDispatcher">
                <order phase="Addressing"/>
            </handler>
        </phase>
        <phase name="Security"/>
        <phase name="PreDispatch"/>
        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
            <handler name="RequestURIBasedDispatcher"
                     
class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher"/>
            <handler name="SOAPActionBasedDispatcher"
                     
class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher"/>
            <handler name="RequestURIOperationDispatcher"
                     
class="org.apache.axis2.dispatchers.RequestURIOperationDispatcher"/>
            <handler name="SOAPMessageBodyBasedDispatcher"
                     
class="org.apache.axis2.dispatchers.SOAPMessageBodyBasedDispatcher"/>
            <handler name="HTTPLocationBasedDispatcher"
                     
class="org.apache.axis2.dispatchers.HTTPLocationBasedDispatcher"/>
            <handler name="GenericProviderDispatcher"
                     
class="org.apache.axis2.jaxws.dispatchers.GenericProviderDispatcher"/>
            <handler name="MustUnderstandValidationDispatcher"
                     
class="org.apache.axis2.jaxws.dispatchers.MustUnderstandValidationDispatcher"/>
        </phase>
        <phase name="RMPhase"/>
        <!--      user can add his own phases to this area  -->
        <phase name="OperationInFaultPhase"/>
        <phase name="soapmonitorPhase"/>
    </phaseOrder>
    <phaseOrder type="OutFaultFlow">
        <!--      user can add his own phases to this area  -->
        <phase name="soapmonitorPhase"/>
        <phase name="OperationOutFaultPhase"/>
        <phase name="RMPhase"/>
        <phase name="PolicyDetermination"/>
        <phase name="MessageOut"/>
        <phase name="Security"/>
    </phaseOrder>



  was:
We are using IBM Tivoli Directory Integrator v7.1.1 to create a solution to 
call Remote Webservices. The requirement is such that, the web services is 
sending a response with a wsse:security header. I have developed a custom 
handler and used it in the InFlow PhaseOrder after the dispatch phase,(by 
creating a custom phase and adding the handler to it) of the axis2.xml file.

But during the, if the web service return a soap-fault, then the instead of the 
InfaultFlow phaseOrder, inFlow phaseOrder is being used.

<phaseOrder type="InFlow">
        <!--  System predefined phases       -->
        <phase name="Transport">
            <handler name="RequestURIBasedDispatcher"
                     
class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher">
                <order phase="Transport"/>
            </handler>
            <handler name="SOAPActionBasedDispatcher"
                     
class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher">
                <order phase="Transport"/>
            </handler>
        </phase>
        <phase name="Addressing">
            <handler name="AddressingBasedDispatcher"
                     
class="org.apache.axis2.dispatchers.AddressingBasedDispatcher">
                <order phase="Addressing"/>
            </handler>
        </phase>
        <phase name="Security"/>
        <phase name="PreDispatch"/>
        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
            <handler name="RequestURIBasedDispatcher"
                     
class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher"/>
            <handler name="SOAPActionBasedDispatcher"
                     
class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher"/>
            <handler name="RequestURIOperationDispatcher"
                     
class="org.apache.axis2.dispatchers.RequestURIOperationDispatcher"/>
            <handler name="SOAPMessageBodyBasedDispatcher"
                     
class="org.apache.axis2.dispatchers.SOAPMessageBodyBasedDispatcher"/>
            <handler name="HTTPLocationBasedDispatcher"
                     
class="org.apache.axis2.dispatchers.HTTPLocationBasedDispatcher"/>
            <handler name="GenericProviderDispatcher"
                     
class="org.apache.axis2.jaxws.dispatchers.GenericProviderDispatcher"/>
            <handler name="MustUnderstandValidationDispatcher"
                     
class="org.apache.axis2.jaxws.dispatchers.MustUnderstandValidationDispatcher"/>
        </phase>
        <phase name="RMPhase"/>
        <!--  System predefined phases       -->
                <phase name="CustomSoapHeaderValidation">
                        <handler name="SecurityHeaderValidator"
                     
class="com.test.service.phase.handler.SecurityHeaderHandler"/>
                </phase>
        <!--   After Postdispatch phase module author or service author can add 
any phase he want      -->
        <phase name="OperationInPhase">
            <handler name="MustUnderstandChecker"
                     
class="org.apache.axis2.jaxws.dispatchers.MustUnderstandChecker">
                <order phase="OperationInPhase"/>
            </handler>
        </phase>
        <phase name="soapmonitorPhase"/>
    </phaseOrder>
    <phaseOrder type="OutFlow">
        <!--      user can add his own phases to this area  -->
        <phase name="soapmonitorPhase"/>
        <phase name="OperationOutPhase"/>
        <!--system predefined phase-->
        <!--these phase will run irrespective of the service-->
        <phase name="RMPhase"/>
        <phase name="PolicyDetermination"/>
        <phase name="MessageOut"/>
        <phase name="Security"/>
    </phaseOrder>
    <phaseOrder type="InFaultFlow">
        <phase name="Addressing">
            <handler name="AddressingBasedDispatcher"
                     
class="org.apache.axis2.dispatchers.AddressingBasedDispatcher">
                <order phase="Addressing"/>
            </handler>
        </phase>
        <phase name="Security"/>
        <phase name="PreDispatch"/>
        <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
            <handler name="RequestURIBasedDispatcher"
                     
class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher"/>
            <handler name="SOAPActionBasedDispatcher"
                     
class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher"/>
            <handler name="RequestURIOperationDispatcher"
                     
class="org.apache.axis2.dispatchers.RequestURIOperationDispatcher"/>
            <handler name="SOAPMessageBodyBasedDispatcher"
                     
class="org.apache.axis2.dispatchers.SOAPMessageBodyBasedDispatcher"/>
            <handler name="HTTPLocationBasedDispatcher"
                     
class="org.apache.axis2.dispatchers.HTTPLocationBasedDispatcher"/>
            <handler name="GenericProviderDispatcher"
                     
class="org.apache.axis2.jaxws.dispatchers.GenericProviderDispatcher"/>
            <handler name="MustUnderstandValidationDispatcher"
                     
class="org.apache.axis2.jaxws.dispatchers.MustUnderstandValidationDispatcher"/>
        </phase>
        <phase name="RMPhase"/>
        <!--      user can add his own phases to this area  -->
        <phase name="OperationInFaultPhase"/>
        <phase name="soapmonitorPhase"/>
    </phaseOrder>
    <phaseOrder type="OutFaultFlow">
        <!--      user can add his own phases to this area  -->
        <phase name="soapmonitorPhase"/>
        <phase name="OperationOutFaultPhase"/>
        <phase name="RMPhase"/>
        <phase name="PolicyDetermination"/>
        <phase name="MessageOut"/>
        <phase name="Security"/>
    </phaseOrder>



    
> The soap faults are being sent through InFlow pipe rather than InFaultFlow 
> pipe.
> --------------------------------------------------------------------------------
>
>                 Key: AXIS2-5581
>                 URL: https://issues.apache.org/jira/browse/AXIS2-5581
>             Project: Axis2
>          Issue Type: Bug
>          Components: TCP transport
>    Affects Versions: 1.4
>            Reporter: Syed Ahmed Jeelani
>              Labels: patch
>             Fix For: 1.4
>
>         Attachments: usingCustomConfigAxis2XML.log, usingDefaultAxis2Xml.log
>
>   Original Estimate: 48h
>  Remaining Estimate: 48h
>
> We are using IBM Tivoli Directory Integrator v7.1.1 to create a solution to 
> call Remote Webservices. IBM TDI Web service suite uses the apache axis2 to 
> invoke the webservices.
> The requirement is such that, the web services is sending a response with a 
> wsse:security header. I have developed a custom handler and used it in the 
> InFlow PhaseOrder after the dispatch phase,(by creating a custom phase and 
> adding the handler to it) of the axis2.xml file.
> But during the, if the web service return a soap-fault, then the instead of 
> the InfaultFlow phaseOrder, inFlow phaseOrder is being used.
> <phaseOrder type="InFlow">
>         <!--  System predefined phases       -->
>         <phase name="Transport">
>             <handler name="RequestURIBasedDispatcher"
>                      
> class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher">
>                 <order phase="Transport"/>
>             </handler>
>             <handler name="SOAPActionBasedDispatcher"
>                      
> class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher">
>                 <order phase="Transport"/>
>             </handler>
>         </phase>
>         <phase name="Addressing">
>             <handler name="AddressingBasedDispatcher"
>                      
> class="org.apache.axis2.dispatchers.AddressingBasedDispatcher">
>                 <order phase="Addressing"/>
>             </handler>
>         </phase>
>         <phase name="Security"/>
>         <phase name="PreDispatch"/>
>         <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
>             <handler name="RequestURIBasedDispatcher"
>                      
> class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher"/>
>             <handler name="SOAPActionBasedDispatcher"
>                      
> class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher"/>
>             <handler name="RequestURIOperationDispatcher"
>                      
> class="org.apache.axis2.dispatchers.RequestURIOperationDispatcher"/>
>             <handler name="SOAPMessageBodyBasedDispatcher"
>                      
> class="org.apache.axis2.dispatchers.SOAPMessageBodyBasedDispatcher"/>
>             <handler name="HTTPLocationBasedDispatcher"
>                      
> class="org.apache.axis2.dispatchers.HTTPLocationBasedDispatcher"/>
>             <handler name="GenericProviderDispatcher"
>                      
> class="org.apache.axis2.jaxws.dispatchers.GenericProviderDispatcher"/>
>             <handler name="MustUnderstandValidationDispatcher"
>                      
> class="org.apache.axis2.jaxws.dispatchers.MustUnderstandValidationDispatcher"/>
>         </phase>
>         <phase name="RMPhase"/>
>         <!--  System predefined phases       -->
>               <phase name="CustomSoapHeaderValidation">
>                       <handler name="SecurityHeaderValidator"
>                      
> class="com.test.service.phase.handler.SecurityHeaderHandler"/>
>               </phase>
>         <!--   After Postdispatch phase module author or service author can 
> add any phase he want      -->
>         <phase name="OperationInPhase">
>             <handler name="MustUnderstandChecker"
>                      
> class="org.apache.axis2.jaxws.dispatchers.MustUnderstandChecker">
>                 <order phase="OperationInPhase"/>
>             </handler>
>         </phase>
>         <phase name="soapmonitorPhase"/>
>     </phaseOrder>
>     <phaseOrder type="OutFlow">
>         <!--      user can add his own phases to this area  -->
>         <phase name="soapmonitorPhase"/>
>         <phase name="OperationOutPhase"/>
>         <!--system predefined phase-->
>         <!--these phase will run irrespective of the service-->
>         <phase name="RMPhase"/>
>         <phase name="PolicyDetermination"/>
>         <phase name="MessageOut"/>
>         <phase name="Security"/>
>     </phaseOrder>
>     <phaseOrder type="InFaultFlow">
>         <phase name="Addressing">
>             <handler name="AddressingBasedDispatcher"
>                      
> class="org.apache.axis2.dispatchers.AddressingBasedDispatcher">
>                 <order phase="Addressing"/>
>             </handler>
>         </phase>
>         <phase name="Security"/>
>         <phase name="PreDispatch"/>
>         <phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
>             <handler name="RequestURIBasedDispatcher"
>                      
> class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher"/>
>             <handler name="SOAPActionBasedDispatcher"
>                      
> class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher"/>
>             <handler name="RequestURIOperationDispatcher"
>                      
> class="org.apache.axis2.dispatchers.RequestURIOperationDispatcher"/>
>             <handler name="SOAPMessageBodyBasedDispatcher"
>                      
> class="org.apache.axis2.dispatchers.SOAPMessageBodyBasedDispatcher"/>
>             <handler name="HTTPLocationBasedDispatcher"
>                      
> class="org.apache.axis2.dispatchers.HTTPLocationBasedDispatcher"/>
>             <handler name="GenericProviderDispatcher"
>                      
> class="org.apache.axis2.jaxws.dispatchers.GenericProviderDispatcher"/>
>             <handler name="MustUnderstandValidationDispatcher"
>                      
> class="org.apache.axis2.jaxws.dispatchers.MustUnderstandValidationDispatcher"/>
>         </phase>
>         <phase name="RMPhase"/>
>         <!--      user can add his own phases to this area  -->
>         <phase name="OperationInFaultPhase"/>
>         <phase name="soapmonitorPhase"/>
>     </phaseOrder>
>     <phaseOrder type="OutFaultFlow">
>         <!--      user can add his own phases to this area  -->
>         <phase name="soapmonitorPhase"/>
>         <phase name="OperationOutFaultPhase"/>
>         <phase name="RMPhase"/>
>         <phase name="PolicyDetermination"/>
>         <phase name="MessageOut"/>
>         <phase name="Security"/>
>     </phaseOrder>

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to