axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Robert van Dijk (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (AXIS2-5473) System hangs (cpu 100%) after sending a corrupt soap message
Date Fri, 04 Jan 2013 10:58:14 GMT

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


Mime
View raw message