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