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

Robert van Dijk updated AXIS2-5473:
-----------------------------------

    Attachment: SomeServiceHANG.aar
                SomeService.wsdl
    
> System hangs (cpu 100%) after sending a corrupt soap message
> ------------------------------------------------------------
>
>                 Key: AXIS2-5473
>                 URL: https://issues.apache.org/jira/browse/AXIS2-5473
>             Project: Axis2
>          Issue Type: Bug
>    Affects Versions: 1.6.1, 1.6.2
>         Environment: Tomcat 7.0.6
> Java 6.0.27
> Windows 7 (and unix too)
>            Reporter: Robert van Dijk
>            Priority: Critical
>         Attachments: SomeServiceHANG.aar, SomeService.wsdl
>
>
> If I sent (using soapui) an invalid soap message, the cpu usage goes up to 
> 100%. There's no response. After stopping the webserver, the cpu usage goes 
> back to normal.
>  
> There are some choice fields and an optional field in the request. If I mess 
> up one specific closing tag (example: see corrupt soap message below), the 
> problem occurs.
> It's easy to "trigger" this problem.
> - Generate code from wsdl
> - Produce an aar file (no skeleton implementation needed)
> - Deploy the aar (for example locally on your PC)
> - Use soapui for the invalid soap message
> - Windows task manager shows the performance
> Corrupt soap message
> **********************************************************************************************************************************************************
> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"; 
> xmlns:v1="http://www.abc.com/Search/v1.0/";>
>    <soapenv:Header/>
>    <soapenv:Body>
>       <v1:GetSearchByCriteriaRequest>
>          <UserId>a</UserId>
>          <SearchCriteria>
>             <byMerchantId>
>                <Next>
>                   <TerminalId>b</TerminalId>
>                   <IdentityId>c</IdentityId>
>                </Next>
>             </byMerchantId>
>                                                                               
>      <-- correct posistion </SearchCriteria> tag
>          <Amount>d</Amount>
>          </SearchCriteria>                                              <-- 
> wrong position </SearchCriteria> tag
>       </v1:GetSearchByCriteriaRequest>
>    </soapenv:Body>
> </soapenv:Envelope>
> WSDL
> **********************************************************************************************************************************************************
> <?xml version="1.0" encoding="UTF-8"?>
> <definitions name="Search" targetNamespace="http://www.abc.com/Search/v1.0/";
>       xmlns:tns="http://www.abc.com/Search/v1.0/"; 
> xmlns:xs="http://www.w3.org/2001/XMLSchema";
>       xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"; 
> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
>       xmlns="http://schemas.xmlsoap.org/wsdl/";>
>       <wsdl:types>
>               <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema";
>                       targetNamespace="http://www.abc.com/Search/v1.0/";>
>                       <xs:simpleType name="TerminalIdType">
>                               <xs:restriction base="xs:string">
>                                       <xs:minLength value="1" />
>                                       <xs:maxLength value="2" />
>                               </xs:restriction>
>                       </xs:simpleType>
>                       <xs:simpleType name="MerchantIdType">
>                               <xs:restriction base="xs:string">
>                                       <xs:minLength value="1" />
>                                       <xs:maxLength value="2" />
>                               </xs:restriction>
>                       </xs:simpleType>
>                       <xs:simpleType name="ItemType">
>                               <xs:restriction base="xs:string">
>                                       <xs:minLength value="1" />
>                                       <xs:maxLength value="2" />
>                               </xs:restriction>
>                       </xs:simpleType>
>                       <xs:simpleType name="AmountType">
>                               <xs:restriction base="xs:string">
>                                       <xs:minLength value="1" />
>                                       <xs:maxLength value="2" />
>                               </xs:restriction>
>                       </xs:simpleType>
>                       <xs:simpleType name="UserIdType">
>                               <xs:restriction base="xs:string">
>                                       <xs:minLength value="1" />
>                                       <xs:maxLength value="2" />
>                               </xs:restriction>
>                       </xs:simpleType>
>                       <xs:complexType name="ErrorCodeType">
>                               <xs:sequence>
>                                       <xs:element name="ErrCd" 
> type="xs:string" />
>                                       <xs:element name="ErrDesc" 
> type="xs:string" />
>                                       <xs:element name="ErrDetail" 
> type="xs:string" minOccurs="0" />
>                               </xs:sequence>
>                       </xs:complexType>
>                       <xs:complexType name="SearchDataType">
>                               <xs:sequence>
>                                       <xs:element name="TerminalId" 
> type="tns:TerminalIdType" />
>                                       <xs:element name="IdentityId" 
> type="tns:ItemType" />
>                               </xs:sequence>
>                       </xs:complexType>
>                       <xs:complexType name="ActionDataType">
>                               <xs:sequence>
>                                       <xs:element name="TerminalId" 
> type="tns:TerminalIdType" />
>                                       <xs:element name="IdentityId" 
> type="tns:ItemType" />
>                               </xs:sequence>
>                       </xs:complexType>
>                       <xs:complexType name="ContractIdKeyType">
>                               <xs:sequence>
>                                       <xs:element name="TerminalId" 
> type="tns:TerminalIdType" />
>                                       <xs:element name="IdentityId" 
> type="tns:ItemType" />
>                               </xs:sequence>
>                       </xs:complexType>
>                       <xs:complexType name="ActionKeyType">
>                               <xs:sequence>
>                                       <xs:element name="TerminalId" 
> type="tns:TerminalIdType" />
>                                       <xs:element name="IdentityId" 
> type="tns:ItemType" />
>                               </xs:sequence>
>                       </xs:complexType>
>                       <xs:complexType name="MerchantIdKeyType">
>                               <xs:sequence>
>                                       <xs:element name="MerchantId" 
> type="tns:MerchantIdType" />
>                               </xs:sequence>
>                       </xs:complexType>
>                       <xs:complexType name="GetSearchByCriteriaRequestType">
>                               <xs:sequence>
>                                       <xs:element name="UserId" 
> type="tns:UserIdType" />
>                                       <xs:element name="SearchCriteria">
>                                               <xs:complexType>
>                                                       <xs:choice>
>                                                               <xs:element 
> name="byMerchantId">
>                                                                       
> <xs:complexType>
>                                                                               
> <xs:choice>
>                                                                               
>         <xs:element name="First" type="tns:MerchantIdKeyType" />
>                                                                               
>         <xs:element name="Next" type="tns:ActionKeyType" />
>                                                                               
> </xs:choice>
>                                                                       
> </xs:complexType>
>                                                               </xs:element>
>                                                               <xs:element 
> name="byContractId">
>                                                                       
> <xs:complexType>
>                                                                               
> <xs:choice>
>                                                                               
>         <xs:element name="First" type="tns:ContractIdKeyType" />
>                                                                               
>         <xs:element name="Next" type="tns:ActionKeyType" />
>                                                                               
> </xs:choice>
>                                                                       
> </xs:complexType>
>                                                               </xs:element>
>                                                       </xs:choice>
>                                               </xs:complexType>
>                                       </xs:element>
>                                       <xs:element name="Amount" minOccurs="0" 
> maxOccurs="1"
>                                               type="tns:AmountType" />
>                               </xs:sequence>
>                       </xs:complexType>
>                       <xs:complexType name="GetSearchByCriteriaResponseType">
>                               <xs:sequence>
>                                       <xs:choice>
>                                               <xs:element name="ActionData" 
> type="tns:ActionDataType"
>                                                       minOccurs="0" 
> maxOccurs="unbounded" />
>                                               <xs:element name="Err" 
> type="tns:ErrorCodeType" />
>                                       </xs:choice>
>                               </xs:sequence>
>                       </xs:complexType>
>                       <xs:complexType name="ActionDataResultType">
>                               <xs:sequence>
>                                       <xs:element name="ActionData" 
> type="tns:ActionDataType" />
>                               </xs:sequence>
>                       </xs:complexType>
>                       <xs:element name="GetSearchByCriteriaRequest"
>                               type="tns:GetSearchByCriteriaRequestType" />
>                       <xs:element name="GetSearchByCriteriaResponse"
>                               type="tns:GetSearchByCriteriaResponseType" />
>               </xsd:schema>
>       </wsdl:types>
>       <wsdl:message name="GetSearchByCriteriaRequest">
>               <wsdl:part name="GetSearchByCriteriaRequest" 
> element="tns:GetSearchByCriteriaRequest" />
>       </wsdl:message>
>       <wsdl:message name="GetSearchByCriteriaResponse">
>               <wsdl:part name="GetSearchByCriteriaResponse"
>                       element="tns:GetSearchByCriteriaResponse" />
>       </wsdl:message>
>       <wsdl:portType name="SearchPortType">
>               <wsdl:operation name="GetSearchByCriteria">
>                       <wsdl:input message="tns:GetSearchByCriteriaRequest" />
>                       <wsdl:output message="tns:GetSearchByCriteriaResponse" 
> />
>               </wsdl:operation>
>       </wsdl:portType>
>       <wsdl:binding name="SearchBinding" type="tns:SearchPortType">
>               <soap:binding style="document"
>                       transport="http://schemas.xmlsoap.org/soap/http"; />
>               <wsdl:operation name="GetSearchByCriteria">
>                       <soap:operation
>                               
> soapAction="http://www.abc.com/Search/v1.0/GetSearchByCriteria"; />
>                       <wsdl:input>
>                               <soap:body use="literal" />
>                       </wsdl:input>
>                       <wsdl:output>
>                               <soap:body use="literal" />
>                       </wsdl:output>
>               </wsdl:operation>
>       </wsdl:binding>
>       <wsdl:service name="SomeService">
>               <wsdl:port name="SearchPortType" binding="tns:SearchBinding">
>                       <soap:address location="http://somewhere.on.the.web"; />
>               </wsdl:port>
>       </wsdl:service>
> </definitions>
> **********************************************************************************************************************************************************

--
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