You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by "Robert van Dijk (JIRA)" <ji...@apache.org> on 2013/01/04 11:56:15 UTC

[jira] [Created] (AXIS2-5473) System hangs (cpu 100%) after sending a corrupt soap message

Robert van Dijk created AXIS2-5473:
--------------------------------------

             Summary: 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.2, 1.6.1
         Environment: Tomcat 7.0.6
Java 6.0.27
Windows 7 (and unix too)
            Reporter: Robert van Dijk
            Priority: Critical


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: java-dev-unsubscribe@axis.apache.org
For additional commands, e-mail: java-dev-help@axis.apache.org