Saturday, February 8, 2014

Route failure message parsing fragment template

<?xml version="1.0" encoding="UTF-8"?>
<wsp:Policy xmlns:L7p="http://www.layer7tech.com/ws/policy" xmlns:wsp="http://schemas.xmlsoap.org/ws/2002/12/policy">
    <wsp:All wsp:Usage="Required">
        <wsp:All wsp:Usage="Required">
            <L7p:AuditDetailAssertion>
                <L7p:Detail stringValueReference="inline"><![CDATA[Routing Status: ${routingStatus};
Response Content Type: ${response.contentType}]]></L7p:Detail>
            </L7p:AuditDetailAssertion>
            <L7p:CommentAssertion>
                <L7p:Comment stringValue="http://www.iana.org/assignments/http-status-codes/http-status-codes.xml"/>
            </L7p:CommentAssertion>
            <L7p:CommentAssertion>
                <L7p:Comment stringValue="meaningful failure modes for route assertion (fault.code)"/>
            </L7p:CommentAssertion>
            <L7p:CommentAssertion>
                <L7p:Comment stringValue="1: failure occured before request was send to the backend"/>
            </L7p:CommentAssertion>
            <L7p:CommentAssertion>
                <L7p:Comment stringValue="2: request was routed but no response was recieved"/>
            </L7p:CommentAssertion>
            <L7p:CommentAssertion>
                <L7p:Comment stringValue="3: bad response from the backend"/>
            </L7p:CommentAssertion>
            <L7p:assertionComment>
                <L7p:Properties mapValue="included">
                    <L7p:entry>
                        <L7p:key stringValue="RIGHT.COMMENT"/>
                        <L7p:value stringValue="//Informational"/>
                    </L7p:entry>
                </L7p:Properties>
            </L7p:assertionComment>
        </wsp:All>
        <wsp:All wsp:Usage="Required">
            <L7p:SetVariable>
                <L7p:Base64Expression stringValue="MA=="/>
                <L7p:VariableToSet stringValue="fault.code"/>
            </L7p:SetVariable>
            <L7p:SetVariable>
                <L7p:Base64Expression stringValue="VW5hYmxlIHRvIGxvY2F0ZSBlcnJvciBkZXRhaWxzLg=="/>
                <L7p:VariableToSet stringValue="failure.messageText"/>
            </L7p:SetVariable>
            <L7p:SetVariable>
                <L7p:Base64Expression stringValue="NTAw"/>
                <L7p:VariableToSet stringValue="fault.status"/>
            </L7p:SetVariable>
            <L7p:SetVariable>
                <L7p:Base64Expression stringValue="VW5kZWZpbmVkIGVycm9yIG9jY3VyZWQu"/>
                <L7p:VariableToSet stringValue="fault.string"/>
            </L7p:SetVariable>
            <L7p:SetVariable>
                <L7p:Base64Expression stringValue="UGxlYXNlIGNhbGwgdGhlIGhlbHAgZGVzayBmb3IgYXNzaXN0YW5jZS4="/>
                <L7p:VariableToSet stringValue="fault.detail"/>
            </L7p:SetVariable>
            <L7p:assertionComment>
                <L7p:Properties mapValue="included">
                    <L7p:entry>
                        <L7p:key stringValue="RIGHT.COMMENT"/>
                        <L7p:value stringValue="//default values"/>
                    </L7p:entry>
                </L7p:Properties>
            </L7p:assertionComment>
        </wsp:All>
        <L7p:ForEachLoop L7p:Usage="Required"
            loopVariable="audit.details" variablePrefix="this">
            <wsp:OneOrMore wsp:Usage="Required">
                <wsp:All wsp:Usage="Required">
                    <L7p:ComparisonAssertion>
                        <L7p:CaseSensitive booleanValue="false"/>
                        <L7p:Expression1 stringValue="${this.current.messageId}"/>
                        <L7p:Operator operatorNull="null"/>
                        <L7p:Predicates predicates="included">
                            <L7p:item dataType="included">
                                <L7p:Type variableDataType="string"/>
                            </L7p:item>
                            <L7p:item binary="included">
                                <L7p:Operator operator="GT"/>
                                <L7p:RightValue stringValue="4030"/>
                            </L7p:item>
                            <L7p:item binary="included">
                                <L7p:Operator operator="LT"/>
                                <L7p:RightValue stringValue="4050"/>
                            </L7p:item>
                        </L7p:Predicates>
                    </L7p:ComparisonAssertion>
                    <wsp:OneOrMore wsp:Usage="Required">
                        <wsp:All wsp:Usage="Required">
                            <L7p:assertionComment>
                                <L7p:Properties mapValue="included">
                                    <L7p:entry>
                                    <L7p:key stringValue="RIGHT.COMMENT"/>
                                    <L7p:value stringValue="//event 4038: bad http code response from backend"/>
                                    </L7p:entry>
                                </L7p:Properties>
                            </L7p:assertionComment>
                        </wsp:All>
                        <wsp:All wsp:Usage="Required">
                            <L7p:assertionComment>
                                <L7p:Properties mapValue="included">
                                    <L7p:entry>
                                    <L7p:key stringValue="RIGHT.COMMENT"/>
                                    <L7p:value stringValue="//event 4041: timeout"/>
                                    </L7p:entry>
                                </L7p:Properties>
                            </L7p:assertionComment>
                        </wsp:All>
                        <wsp:All wsp:Usage="Required">
                            <L7p:ComparisonAssertion>
                                <L7p:CaseSensitive booleanValue="false"/>
                                <L7p:Expression1 stringValue="${this.current.messageId}"/>
                                <L7p:Operator operatorNull="null"/>
                                <L7p:Predicates predicates="included">
                                    <L7p:item dataType="included">
                                    <L7p:Type variableDataType="string"/>
                                    </L7p:item>
                                    <L7p:item binary="included">
                                    <L7p:RightValue stringValue="4042"/>
                                    </L7p:item>
                                </L7p:Predicates>
                            </L7p:ComparisonAssertion>
                            <L7p:SetVariable>
                                <L7p:Base64Expression stringValue="JHt0aGlzLmN1cnJlbnQubWVzc2FnZUlkfQ=="/>
                                <L7p:VariableToSet stringValue="fault.code"/>
                            </L7p:SetVariable>
                            <L7p:SetVariable>
                                <L7p:Base64Expression stringValue="JHt0aGlzLmN1cnJlbnQucGFyYW1zWzFdfQ=="/>
                                <L7p:VariableToSet stringValue="failure.messageText"/>
                            </L7p:SetVariable>
                            <L7p:Split>
                                <L7p:InputVariable stringValue="failure.messageText"/>
                                <L7p:OutputVariable stringValue="failure.messageText"/>
                                <L7p:SplitPattern stringValue=":"/>
                                <L7p:SplitPatternRegEx booleanValue="false"/>
                            </L7p:Split>
                            <wsp:OneOrMore wsp:Usage="Required">
                                <wsp:All wsp:Usage="Required">
                                    <L7p:CommentAssertion>
                                    <L7p:AssertionComment assertionComment="included">
                                    <L7p:Properties mapValue="included">
                                    <L7p:entry>
                                    <L7p:key stringValue="LEFT.COMMENT"/>
                                    <L7p:value stringValue="/*split on : [3]*/"/>
                                    </L7p:entry>
                                    </L7p:Properties>
                                    </L7p:AssertionComment>
                                    <L7p:Comment stringValue="Received fatal alert: unexpected_message"/>
                                    </L7p:CommentAssertion>
                                    <L7p:ComparisonAssertion>
                                    <L7p:CaseSensitive booleanValue="false"/>
                                    <L7p:Expression1 stringValue="${failure.messageText}"/>
                                    <L7p:MultivaluedComparison multivaluedComparison="ANY"/>
                                    <L7p:Operator operatorNull="null"/>
                                    <L7p:Predicates predicates="included">
                                    <L7p:item dataType="included">
                                    <L7p:Type variableDataType="string"/>
                                    </L7p:item>
                                    <L7p:item binary="included">
                                    <L7p:Operator operator="CONTAINS"/>
                                    <L7p:RightValue stringValue="Received fatal alert: unexpected_message"/>
                                    </L7p:item>
                                    </L7p:Predicates>
                                    </L7p:ComparisonAssertion>
                                    <L7p:assertionComment>
                                    <L7p:Properties mapValue="included">
                                    <L7p:entry>
                                    <L7p:key stringValue="RIGHT.COMMENT"/>
                                    <L7p:value stringValue="//Cannot establish trust with backend server."/>
                                    </L7p:entry>
                                    </L7p:Properties>
                                    </L7p:assertionComment>
                                </wsp:All>
                                <wsp:All wsp:Usage="Required">
                                    <L7p:CommentAssertion>
                                    <L7p:AssertionComment assertionComment="included">
                                    <L7p:Properties mapValue="included">
                                    <L7p:entry>
                                    <L7p:key stringValue="LEFT.COMMENT"/>
                                    <L7p:value stringValue="/*split on : [3]*/"/>
                                    </L7p:entry>
                                    </L7p:Properties>
                                    </L7p:AssertionComment>
                                    <L7p:Comment stringValue="java.security.cert.CertificateException: Certificate path validation and/or revocation checking failed. Caused by: Certificate path validation and/or revocation checking failed"/>
                                    </L7p:CommentAssertion>
                                    <L7p:ComparisonAssertion>
                                    <L7p:CaseSensitive booleanValue="false"/>
                                    <L7p:Expression1 stringValue="${failure.messageText}"/>
                                    <L7p:MultivaluedComparison multivaluedComparison="ANY"/>
                                    <L7p:Operator operatorNull="null"/>
                                    <L7p:Predicates predicates="included">
                                    <L7p:item dataType="included">
                                    <L7p:Type variableDataType="string"/>
                                    </L7p:item>
                                    <L7p:item binary="included">
                                    <L7p:Operator operator="CONTAINS"/>
                                    <L7p:RightValue stringValue="Certificate path validation and/or revocation checking failed"/>
                                    </L7p:item>
                                    </L7p:Predicates>
                                    </L7p:ComparisonAssertion>
                                    <L7p:assertionComment>
                                    <L7p:Properties mapValue="included">
                                    <L7p:entry>
                                    <L7p:key stringValue="RIGHT.COMMENT"/>
                                    <L7p:value stringValue="//Certificate path validation and/or revocation checking failed"/>
                                    </L7p:entry>
                                    </L7p:Properties>
                                    </L7p:assertionComment>
                                </wsp:All>
                                <wsp:All wsp:Usage="Required">
                                    <L7p:CommentAssertion>
                                    <L7p:AssertionComment assertionComment="included">
                                    <L7p:Properties mapValue="included">
                                    <L7p:entry>
                                    <L7p:key stringValue="LEFT.COMMENT"/>
                                    <L7p:value stringValue="/*split on : [3]*/"/>
                                    </L7p:entry>
                                    </L7p:Properties>
                                    </L7p:AssertionComment>
                                    <L7p:Comment stringValue="Unable to obtain HTTP response from https://your.server.com/service/endpoint.asmx: Host name does not match certificate 'your.server.com'."/>
                                    </L7p:CommentAssertion>
                                    <L7p:ComparisonAssertion>
                                    <L7p:CaseSensitive booleanValue="false"/>
                                    <L7p:Expression1 stringValue="${failure.messageText}"/>
                                    <L7p:MultivaluedComparison multivaluedComparison="ANY"/>
                                    <L7p:Operator operatorNull="null"/>
                                    <L7p:Predicates predicates="included">
                                    <L7p:item dataType="included">
                                    <L7p:Type variableDataType="string"/>
                                    </L7p:item>
                                    <L7p:item binary="included">
                                    <L7p:Operator operator="CONTAINS"/>
                                    <L7p:RightValue stringValue="Host name does not match certificate"/>
                                    </L7p:item>
                                    </L7p:Predicates>
                                    </L7p:ComparisonAssertion>
                                    <L7p:assertionComment>
                                    <L7p:Properties mapValue="included">
                                    <L7p:entry>
                                    <L7p:key stringValue="RIGHT.COMMENT"/>
                                    <L7p:value stringValue="//Host name does not match certificate"/>
                                    </L7p:entry>
                                    </L7p:Properties>
                                    </L7p:assertionComment>
                                </wsp:All>
                                <wsp:All wsp:Usage="Required">
                                    <L7p:CommentAssertion>
                                    <L7p:AssertionComment assertionComment="included">
                                    <L7p:Properties mapValue="included">
                                    <L7p:entry>
                                    <L7p:key stringValue="LEFT.COMMENT"/>
                                    <L7p:value stringValue="/*split on : [3]*/"/>
                                    </L7p:entry>
                                    </L7p:Properties>
                                    </L7p:AssertionComment>
                                    <L7p:Comment stringValue="Unable to login using gateway configured account."/>
                                    </L7p:CommentAssertion>
                                    <L7p:ComparisonAssertion>
                                    <L7p:CaseSensitive booleanValue="false"/>
                                    <L7p:Expression1 stringValue="${failure.messageText}"/>
                                    <L7p:MultivaluedComparison multivaluedComparison="ANY"/>
                                    <L7p:Operator operatorNull="null"/>
                                    <L7p:Predicates predicates="included">
                                    <L7p:item dataType="included">
                                    <L7p:Type variableDataType="string"/>
                                    </L7p:item>
                                    <L7p:item binary="included">
                                    <L7p:Operator operator="CONTAINS"/>
                                    <L7p:RightValue stringValue="unsupported_certificate"/>
                                    </L7p:item>
                                    </L7p:Predicates>
                                    </L7p:ComparisonAssertion>
                                    <L7p:assertionComment>
                                    <L7p:Properties mapValue="included">
                                    <L7p:entry>
                                    <L7p:key stringValue="RIGHT.COMMENT"/>
                                    <L7p:value stringValue="//Received fatal alert,  unsupported_certificate"/>
                                    </L7p:entry>
                                    </L7p:Properties>
                                    </L7p:assertionComment>
                                </wsp:All>
                                <wsp:All wsp:Usage="Required">
                                    <L7p:CommentAssertion>
                                    <L7p:AssertionComment assertionComment="included">
                                    <L7p:Properties mapValue="included">
                                    <L7p:entry>
                                    <L7p:key stringValue="LEFT.COMMENT"/>
                                    <L7p:value stringValue="/*split on : [3]*/"/>
                                    </L7p:entry>
                                    </L7p:Properties>
                                    </L7p:AssertionComment>
                                    <L7p:Comment stringValue="Received close_notify during handshake"/>
                                    </L7p:CommentAssertion>
                                    <L7p:ComparisonAssertion>
                                    <L7p:CaseSensitive booleanValue="false"/>
                                    <L7p:Expression1 stringValue="${failure.messageText}"/>
                                    <L7p:MultivaluedComparison multivaluedComparison="ANY"/>
                                    <L7p:Operator operatorNull="null"/>
                                    <L7p:Predicates predicates="included">
                                    <L7p:item dataType="included">
                                    <L7p:Type variableDataType="string"/>
                                    </L7p:item>
                                    <L7p:item binary="included">
                                    <L7p:Operator operator="CONTAINS"/>
                                    <L7p:RightValue stringValue="close_notify"/>
                                    </L7p:item>
                                    </L7p:Predicates>
                                    </L7p:ComparisonAssertion>
                                    <L7p:assertionComment>
                                    <L7p:Properties mapValue="included">
                                    <L7p:entry>
                                    <L7p:key stringValue="RIGHT.COMMENT"/>
                                    <L7p:value stringValue="//Received close_notify during handshake"/>
                                    </L7p:entry>
                                    </L7p:Properties>
                                    </L7p:assertionComment>
                                </wsp:All>
                                <wsp:All wsp:Usage="Required">
                                    <L7p:CommentAssertion>
                                    <L7p:AssertionComment assertionComment="included">
                                    <L7p:Properties mapValue="included">
                                    <L7p:entry>
                                    <L7p:key stringValue="LEFT.COMMENT"/>
                                    <L7p:value stringValue="/*split on : [3]*/"/>
                                    </L7p:entry>
                                    </L7p:Properties>
                                    </L7p:AssertionComment>
                                    <L7p:Comment stringValue=" Timeout when connecting to host 'your.server.com'. Caused by"/>
                                    </L7p:CommentAssertion>
                                    <L7p:ComparisonAssertion>
                                    <L7p:CaseSensitive booleanValue="false"/>
                                    <L7p:Expression1 stringValue="${failure.messageText}"/>
                                    <L7p:MultivaluedComparison multivaluedComparison="ANY"/>
                                    <L7p:Operator operatorNull="null"/>
                                    <L7p:Predicates predicates="included">
                                    <L7p:item dataType="included">
                                    <L7p:Type variableDataType="string"/>
                                    </L7p:item>
                                    <L7p:item binary="included">
                                    <L7p:Operator operator="CONTAINS"/>
                                    <L7p:RightValue stringValue="Timeout when connecting to host"/>
                                    </L7p:item>
                                    </L7p:Predicates>
                                    </L7p:ComparisonAssertion>
                                    <L7p:assertionComment>
                                    <L7p:Properties mapValue="included">
                                    <L7p:entry>
                                    <L7p:key stringValue="RIGHT.COMMENT"/>
                                    <L7p:value stringValue="//Timeout when connecting to host"/>
                                    </L7p:entry>
                                    </L7p:Properties>
                                    </L7p:assertionComment>
                                </wsp:All>
                                <wsp:All wsp:Usage="Required">
                                    <L7p:CommentAssertion>
                                    <L7p:AssertionComment assertionComment="included">
                                    <L7p:Properties mapValue="included">
                                    <L7p:entry>
                                    <L7p:key stringValue="LEFT.COMMENT"/>
                                    <L7p:value stringValue="/*split on : [3]*/"/>
                                    </L7p:entry>
                                    </L7p:Properties>
                                    </L7p:AssertionComment>
                                    <L7p:Comment stringValue=" The host did not accept the connection within timeout of 1 ms. Caused by"/>
                                    </L7p:CommentAssertion>
                                    <L7p:ComparisonAssertion>
                                    <L7p:CaseSensitive booleanValue="false"/>
                                    <L7p:Expression1 stringValue="${failure.messageText}"/>
                                    <L7p:MultivaluedComparison multivaluedComparison="ANY"/>
                                    <L7p:Operator operatorNull="null"/>
                                    <L7p:Predicates predicates="included">
                                    <L7p:item dataType="included">
                                    <L7p:Type variableDataType="string"/>
                                    </L7p:item>
                                    <L7p:item binary="included">
                                    <L7p:Operator operator="CONTAINS"/>
                                    <L7p:RightValue stringValue="The host did not accept the connection"/>
                                    </L7p:item>
                                    </L7p:Predicates>
                                    </L7p:ComparisonAssertion>
                                    <L7p:assertionComment>
                                    <L7p:Properties mapValue="included">
                                    <L7p:entry>
                                    <L7p:key stringValue="RIGHT.COMMENT"/>
                                    <L7p:value stringValue="//The host did not accept the connection"/>
                                    </L7p:entry>
                                    </L7p:Properties>
                                    </L7p:assertionComment>
                                </wsp:All>
                                <wsp:All wsp:Usage="Required">
                                    <L7p:CommentAssertion>
                                    <L7p:AssertionComment assertionComment="included">
                                    <L7p:Properties mapValue="included">
                                    <L7p:entry>
                                    <L7p:key stringValue="LEFT.COMMENT"/>
                                    <L7p:value stringValue="/*split on : [3]*/"/>
                                    </L7p:entry>
                                    </L7p:Properties>
                                    </L7p:AssertionComment>
                                    <L7p:Comment stringValue=" Unknown host"/>
                                    </L7p:CommentAssertion>
                                    <L7p:ComparisonAssertion>
                                    <L7p:CaseSensitive booleanValue="false"/>
                                    <L7p:Expression1 stringValue="${failure.messageText}"/>
                                    <L7p:MultivaluedComparison multivaluedComparison="ANY"/>
                                    <L7p:Operator operatorNull="null"/>
                                    <L7p:Predicates predicates="included">
                                    <L7p:item dataType="included">
                                    <L7p:Type variableDataType="string"/>
                                    </L7p:item>
                                    <L7p:item binary="included">
                                    <L7p:Operator operator="CONTAINS"/>
                                    <L7p:RightValue stringValue="Unknown host"/>
                                    </L7p:item>
                                    </L7p:Predicates>
                                    </L7p:ComparisonAssertion>
                                    <L7p:assertionComment>
                                    <L7p:Properties mapValue="included">
                                    <L7p:entry>
                                    <L7p:key stringValue="RIGHT.COMMENT"/>
                                    <L7p:value stringValue="//Unknown host"/>
                                    </L7p:entry>
                                    </L7p:Properties>
                                    </L7p:assertionComment>
                                </wsp:All>
                                <wsp:All wsp:Usage="Required">
                                    <L7p:CommentAssertion>
                                    <L7p:AssertionComment assertionComment="included">
                                    <L7p:Properties mapValue="included">
                                    <L7p:entry>
                                    <L7p:key stringValue="LEFT.COMMENT"/>
                                    <L7p:value stringValue="/*split on : [3]*/"/>
                                    </L7p:entry>
                                    </L7p:Properties>
                                    </L7p:AssertionComment>
                                    <L7p:Comment stringValue="Multipart stream ended before a terminating boundary was encountered"/>
                                    </L7p:CommentAssertion>
                                    <L7p:ComparisonAssertion>
                                    <L7p:CaseSensitive booleanValue="false"/>
                                    <L7p:Expression1 stringValue="${failure.messageText}"/>
                                    <L7p:MultivaluedComparison multivaluedComparison="ANY"/>
                                    <L7p:Operator operatorNull="null"/>
                                    <L7p:Predicates predicates="included">
                                    <L7p:item dataType="included">
                                    <L7p:Type variableDataType="string"/>
                                    </L7p:item>
                                    <L7p:item binary="included">
                                    <L7p:Operator operator="CONTAINS"/>
                                    <L7p:RightValue stringValue="Multipart stream ended before a terminating boundary was encountered"/>
                                    </L7p:item>
                                    </L7p:Predicates>
                                    </L7p:ComparisonAssertion>
                                    <L7p:assertionComment>
                                    <L7p:Properties mapValue="included">
                                    <L7p:entry>
                                    <L7p:key stringValue="RIGHT.COMMENT"/>
                                    <L7p:value stringValue="//Multipart stream ended before a terminating boundary was encountered"/>
                                    </L7p:entry>
                                    </L7p:Properties>
                                    </L7p:assertionComment>
                                </wsp:All>
                                <wsp:All wsp:Usage="Required">
                                    <L7p:CommentAssertion>
                                    <L7p:AssertionComment assertionComment="included">
                                    <L7p:Properties mapValue="included">
                                    <L7p:entry>
                                    <L7p:key stringValue="LEFT.COMMENT"/>
                                    <L7p:value stringValue="/*split on : [3]*/"/>
                                    </L7p:entry>
                                    </L7p:Properties>
                                    </L7p:AssertionComment>
                                    <L7p:Comment stringValue="Unable to read stream: the specified maximum data size limit would be exceeded"/>
                                    </L7p:CommentAssertion>
                                    <L7p:ComparisonAssertion>
                                    <L7p:CaseSensitive booleanValue="false"/>
                                    <L7p:Expression1 stringValue="${failure.messageText}"/>
                                    <L7p:MultivaluedComparison multivaluedComparison="ANY"/>
                                    <L7p:Operator operatorNull="null"/>
                                    <L7p:Predicates predicates="included">
                                    <L7p:item dataType="included">
                                    <L7p:Type variableDataType="string"/>
                                    </L7p:item>
                                    <L7p:item binary="included">
                                    <L7p:Operator operator="CONTAINS"/>
                                    <L7p:RightValue stringValue="Unable to read stream"/>
                                    </L7p:item>
                                    </L7p:Predicates>
                                    </L7p:ComparisonAssertion>
                                    <L7p:assertionComment>
                                    <L7p:Properties mapValue="included">
                                    <L7p:entry>
                                    <L7p:key stringValue="RIGHT.COMMENT"/>
                                    <L7p:value stringValue="//the specified maximum data size limit would be exceeded"/>
                                    </L7p:entry>
                                    </L7p:Properties>
                                    </L7p:assertionComment>
                                </wsp:All>
                                <wsp:All wsp:Usage="Required">
                                    <L7p:CommentAssertion>
                                    <L7p:AssertionComment assertionComment="included">
                                    <L7p:Properties mapValue="included">
                                    <L7p:entry>
                                    <L7p:key stringValue="LEFT.COMMENT"/>
                                    <L7p:value stringValue="/*split on : [3]*/"/>
                                    </L7p:entry>
                                    </L7p:Properties>
                                    </L7p:AssertionComment>
                                    <L7p:Comment stringValue="Unable to obtain HTTP response from https://your.server.com:443/service/endpoint: Read timed out"/>
                                    </L7p:CommentAssertion>
                                    <L7p:ComparisonAssertion>
                                    <L7p:CaseSensitive booleanValue="false"/>
                                    <L7p:Expression1 stringValue="${failure.messageText}"/>
                                    <L7p:MultivaluedComparison multivaluedComparison="ANY"/>
                                    <L7p:Operator operatorNull="null"/>
                                    <L7p:Predicates predicates="included">
                                    <L7p:item dataType="included">
                                    <L7p:Type variableDataType="string"/>
                                    </L7p:item>
                                    <L7p:item binary="included">
                                    <L7p:Operator operator="CONTAINS"/>
                                    <L7p:RightValue stringValue="Read timed out"/>
                                    </L7p:item>
                                    </L7p:Predicates>
                                    </L7p:ComparisonAssertion>
                                    <L7p:assertionComment>
                                    <L7p:Properties mapValue="included">
                                    <L7p:entry>
                                    <L7p:key stringValue="RIGHT.COMMENT"/>
                                    <L7p:value stringValue="//Read timed out"/>
                                    </L7p:entry>
                                    </L7p:Properties>
                                    </L7p:assertionComment>
                                </wsp:All>
                                <wsp:All wsp:Usage="Required">
                                    <L7p:CommentAssertion>
                                    <L7p:AssertionComment assertionComment="included">
                                    <L7p:Properties mapValue="included">
                                    <L7p:entry>
                                    <L7p:key stringValue="LEFT.COMMENT"/>
                                    <L7p:value stringValue="/*split on : [3]*/"/>
                                    </L7p:entry>
                                    </L7p:Properties>
                                    </L7p:AssertionComment>
                                    <L7p:Comment stringValue=" Connection reset"/>
                                    </L7p:CommentAssertion>
                                    <L7p:ComparisonAssertion>
                                    <L7p:CaseSensitive booleanValue="false"/>
                                    <L7p:Expression1 stringValue="${failure.messageText}"/>
                                    <L7p:MultivaluedComparison multivaluedComparison="ANY"/>
                                    <L7p:Operator operatorNull="null"/>
                                    <L7p:Predicates predicates="included">
                                    <L7p:item dataType="included">
                                    <L7p:Type variableDataType="string"/>
                                    </L7p:item>
                                    <L7p:item binary="included">
                                    <L7p:Operator operator="CONTAINS"/>
                                    <L7p:RightValue stringValue="Connection reset"/>
                                    </L7p:item>
                                    </L7p:Predicates>
                                    </L7p:ComparisonAssertion>
                                    <L7p:assertionComment>
                                    <L7p:Properties mapValue="included">
                                    <L7p:entry>
                                    <L7p:key stringValue="RIGHT.COMMENT"/>
                                    <L7p:value stringValue="//Connection reset"/>
                                    </L7p:entry>
                                    </L7p:Properties>
                                    </L7p:assertionComment>
                                </wsp:All>
                                <wsp:All wsp:Usage="Required">
                                    <L7p:CommentAssertion>
                                    <L7p:AssertionComment assertionComment="included">
                                    <L7p:Properties mapValue="included">
                                    <L7p:entry>
                                    <L7p:key stringValue="LEFT.COMMENT"/>
                                    <L7p:value stringValue="/*split on : [3]*/"/>
                                    </L7p:entry>
                                    </L7p:Properties>
                                    </L7p:AssertionComment>
                                    <L7p:Comment stringValue=" The server your.server.com failed to respond with a valid HTTP response"/>
                                    </L7p:CommentAssertion>
                                    <L7p:ComparisonAssertion>
                                    <L7p:CaseSensitive booleanValue="false"/>
                                    <L7p:Expression1 stringValue="${failure.messageText}"/>
                                    <L7p:MultivaluedComparison multivaluedComparison="ANY"/>
                                    <L7p:Operator operatorNull="null"/>
                                    <L7p:Predicates predicates="included">
                                    <L7p:item dataType="included">
                                    <L7p:Type variableDataType="string"/>
                                    </L7p:item>
                                    <L7p:item binary="included">
                                    <L7p:Operator operator="CONTAINS"/>
                                    <L7p:RightValue stringValue="failed to respond with a valid HTTP response"/>
                                    </L7p:item>
                                    </L7p:Predicates>
                                    </L7p:ComparisonAssertion>
                                    <L7p:assertionComment>
                                    <L7p:Properties mapValue="included">
                                    <L7p:entry>
                                    <L7p:key stringValue="RIGHT.COMMENT"/>
                                    <L7p:value stringValue="//failed to respond with a valid HTTP response"/>
                                    </L7p:entry>
                                    </L7p:Properties>
                                    </L7p:assertionComment>
                                </wsp:All>
                                <wsp:All wsp:Usage="Required">
                                    <L7p:CommentAssertion>
                                    <L7p:AssertionComment assertionComment="included">
                                    <L7p:Properties mapValue="included">
                                    <L7p:entry>
                                    <L7p:key stringValue="LEFT.COMMENT"/>
                                    <L7p:value stringValue="/*split on : [3]*/"/>
                                    </L7p:entry>
                                    </L7p:Properties>
                                    </L7p:AssertionComment>
                                    <L7p:Comment stringValue="Connection refused"/>
                                    </L7p:CommentAssertion>
                                    <L7p:ComparisonAssertion>
                                    <L7p:CaseSensitive booleanValue="false"/>
                                    <L7p:Expression1 stringValue="${failure.messageText}"/>
                                    <L7p:MultivaluedComparison multivaluedComparison="ANY"/>
                                    <L7p:Operator operatorNull="null"/>
                                    <L7p:Predicates predicates="included">
                                    <L7p:item dataType="included">
                                    <L7p:Type variableDataType="string"/>
                                    </L7p:item>
                                    <L7p:item binary="included">
                                    <L7p:Operator operator="CONTAINS"/>
                                    <L7p:RightValue stringValue="Connection refused"/>
                                    </L7p:item>
                                    </L7p:Predicates>
                                    </L7p:ComparisonAssertion>
                                    <L7p:assertionComment>
                                    <L7p:Properties mapValue="included">
                                    <L7p:entry>
                                    <L7p:key stringValue="RIGHT.COMMENT"/>
                                    <L7p:value stringValue="//Connection refused"/>
                                    </L7p:entry>
                                    </L7p:Properties>
                                    </L7p:assertionComment>
                                </wsp:All>
                                <L7p:TrueAssertion/>
                            </wsp:OneOrMore>
                            <L7p:assertionComment>
                                <L7p:Properties mapValue="included">
                                    <L7p:entry>
                                    <L7p:key stringValue="RIGHT.COMMENT"/>
                                    <L7p:value stringValue="//event 4042"/>
                                    </L7p:entry>
                                </L7p:Properties>
                            </L7p:assertionComment>
                        </wsp:All>
                    </wsp:OneOrMore>
                </wsp:All>
                <L7p:TrueAssertion/>
            </wsp:OneOrMore>
        </L7p:ForEachLoop>
        <L7p:CustomizeErrorResponse>
            <L7p:Content stringValueReference="inline"><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    <soapenv:Body>
        <soapenv:Fault>
            <faultcode>soapenv:Server</faultcode>
            <faultstring>${fault.string}</faultstring>
            <faultactor>${request.url}</faultactor>
            <detail>
                <datetime>${request.time}</datetime>
                <errorcode>${fault.code}${fault.status}${fault.char}</errorcode>
                <message>${fault.detail}</message>
        </detail>
        </soapenv:Fault>
    </soapenv:Body>
</soapenv:Envelope>]]></L7p:Content>
            <L7p:ContentType stringValue="text/xml;charset=utf-8"/>
            <L7p:ExtraHeaders nameValuePairArray="included"/>
            <L7p:HttpStatus stringValue="${fault.status}"/>
        </L7p:CustomizeErrorResponse>
        <L7p:ExportVariables>
            <L7p:AssertionComment assertionComment="included">
                <L7p:Properties mapValue="included">
                    <L7p:entry>
                        <L7p:key stringValue="RIGHT.COMMENT"/>
                        <L7p:value stringValue="//for use with alerting"/>
                    </L7p:entry>
                </L7p:Properties>
            </L7p:AssertionComment>
            <L7p:ExportedVars stringArrayValue="included">
                <L7p:item stringValue="failure.messageText"/>
            </L7p:ExportedVars>
        </L7p:ExportVariables>
        <wsp:All wsp:Usage="Required">
            <L7p:CommentAssertion>
                <L7p:Comment stringValue="failure.messageText: error description for logging and optionally for notifications"/>
            </L7p:CommentAssertion>
            <L7p:CommentAssertion>
                <L7p:Comment stringValue="fault.detail: english readable message for client"/>
            </L7p:CommentAssertion>
            <L7p:CommentAssertion>
                <L7p:Comment stringValue="fault.string: short description for client"/>
            </L7p:CommentAssertion>
            <L7p:CommentAssertion>
                <L7p:Comment stringValue="fault.code: custom event code meaningful only to Layer7 admin team"/>
            </L7p:CommentAssertion>
            <L7p:CommentAssertion>
                <L7p:Comment stringValue="fault.status: HTTP code to send to client"/>
            </L7p:CommentAssertion>
            <L7p:AuditDetailAssertion>
                <L7p:AssertionComment assertionComment="included">
                    <L7p:Properties mapValue="included">
                        <L7p:entry>
                            <L7p:key stringValue="RIGHT.COMMENT"/>
                            <L7p:value stringValue="//audit"/>
                        </L7p:entry>
                    </L7p:Properties>
                </L7p:AssertionComment>
                <L7p:Detail stringValueReference="inline"><![CDATA[Routing latency: ${httpRouting.latency};
Route Falure: ${failure.messageText};
Route error ${fault.code} found; ${fault.status} sent]]></L7p:Detail>
            </L7p:AuditDetailAssertion>
            <L7p:assertionComment>
                <L7p:Properties mapValue="included">
                    <L7p:entry>
                        <L7p:key stringValue="RIGHT.COMMENT"/>
                        <L7p:value stringValue="//informational"/>
                    </L7p:entry>
                </L7p:Properties>
            </L7p:assertionComment>
        </wsp:All>
        <L7p:FalseAssertion>
            <L7p:AssertionComment assertionComment="included">
                <L7p:Properties mapValue="included">
                    <L7p:entry>
                        <L7p:key stringValue="RIGHT.COMMENT"/>
                        <L7p:value stringValue="//stop causes error response to be sent to client"/>
                    </L7p:entry>
                </L7p:Properties>
            </L7p:AssertionComment>
        </L7p:FalseAssertion>
    </wsp:All>
</wsp:Policy>

4 comments:

  1. Hi can u suggest a solution for the above error. We are getting the same error as Multipart stream ended before a terminating boundary was encountered in layer 7 while passing an attachment and the request contains boundary parts and xml.

    ReplyDelete
  2. We experienced that error when trying to forward requests with MTOM attachments through one Layer7 appliance to another (due to routing issues) and were advised by vendor support "this issue can be resolved if the Content-Type is change from multipart/form-data to multipart/related."

    Also (circa April 2013), "We have just released a patch for version 7.0 that will correct this behavior. The patch can be obtained from our customer portal (https://ssl.salesforce.com/sfc/#version?selectedDocumentId=06900000000AheW)."

    We resolved the routing issue and our requests (which were in fact already multipart/related when seeing that error) could then be routed directly to the backend application server without going through another Layer7 appliance.

    Though this may not solve the issue for you I hope it helps.

    ReplyDelete
  3. thanks for the reply Ben but we are using multipart/related content type only but still we are facing the same issue. do you suggest any other solutions?

    ReplyDelete
  4. OK, This may sound a bit odd...
    Try using an add audit details assertion after the routing assertion to capture the size of the request.
    If memory serves this is one of the things we tried while troubleshooting and I distinctly recall being surprised that it affected the outcome despite only being a logging assertion; vendor support explained to us that this is because it forces the policy to preserve the request object until after it has been fully transmitted to the backend server.
    If that does not help then can you give a little more details (i.e. what are you seeing on the client and backend when this occurs)?

    ReplyDelete