The deadlock problem was due to the usuage of piped streams and it has been
fixed for a while. Please try the M1 candidate.
Thanks,
Raymond
----- Original Message -----
From: "Rashmi Hunt" <[EMAIL PROTECTED]>
To: <tuscany-dev@ws.apache.org>
Sent: Monday, May 22, 2006 2:01 PM
Subject: Thread hangs in Axis2 binding code
I am trying to run slightly modified version of Account web service sample.
The difference in the sample I am running is, input to the service is
DataObject
The snapshot of Tuscancy code I have corresponds to the tag
java-stable-20060304.
AxiomHelper.toDataObject((TypeHelper typeHelper, OMElement omElement)
function hangs at
omElement.serialize(pos). Problem seems to be the size of the DataObject in
the SOAP Body.
Thread dump
"WebContainer : 0" (TID:0x147EAD00, sys_thread_t:0x1442C034, state:CW,
native ID:0x000001D8) prio=5
at java/lang/Object.wait(Native Method)
at java/lang/Object.wait(Object.java:231(Compiled Code))
at java/io/PipedInputStream.awaitSpace(PipedInputStream.java:226)
at java/io/PipedInputStream.receive(PipedInputStream.java:183)
at java/io/PipedOutputStream.write(PipedOutputStream.java:146)
at sun/nio/cs/StreamEncoder$ConverterSE.implFlushBuffer(
StreamEncoder.java:283(Compiled Code))
at sun/nio/cs/StreamEncoder$ConverterSE.implFlush(StreamEncoder.java
:289)
at sun/nio/cs/StreamEncoder.flush(StreamEncoder.java:200)
at java/io/OutputStreamWriter.flush(OutputStreamWriter.java:236)
at com/ctc/wstx/sw/BaseStreamWriter.flushStream(BaseStreamWriter.java
:1351)
at com/ctc/wstx/sw/BaseStreamWriter.safeFlushStream(
BaseStreamWriter.java:1358)
at com/ctc/wstx/sw/BaseStreamWriter.flush(BaseStreamWriter.java:309)
at org/apache/axis2/om/impl/OMOutputImpl.flush(OMOutputImpl.java:78)
at org/apache/axis2/om/impl/llom/OMNodeImpl.serialize(OMNodeImpl.java
:298)
at org/apache/axis2/om/impl/llom/OMNodeImpl.serialize(OMNodeImpl.java
:338)
at org/apache/tuscany/binding/axis2/util/AxiomHelper.toDataObject(
AxiomHelper.java:146)
Here is the WSDL
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:tns="http://www.bigbank.com/Account/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:account="http://www.bigbank.com/Account/"
targetNamespace="http://www.bigbank.com/Account/"
name="AccountService">
<wsdl:types>
<xsd:schema targetNamespace="http://www.bigbank.com/Account/"
xmlns:account="http://www.bigbank.com/Account/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sdojava="commonj.sdo/java"
sdojava:package="org.apache.tuscany.samples.bigbank.account">
<xsd:element name="invalidRequestFault">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="message" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="getAccountReport">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="customerID"
type="account:AccountReport"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="getAccountReportResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="accountReport"
type="account:AccountReport"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="AccountReport">
<xsd:sequence>
<xsd:element name="accountSummaries"
type="account:AccountSummary" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="AccountSummary">
<xsd:sequence>
<xsd:element name="accountType" type="xsd:string"/>
<xsd:element name="accountNumber" type="xsd:string"/>
<xsd:element name="balance" type="xsd:float"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
</wsdl:types>
<wsdl:message name="getAccountReportRequest">
<wsdl:part name="getAccountReportRequest"
element="account:getAccountReport"/>
</wsdl:message>
<wsdl:message name="getAccountReportResponse">
<wsdl:part name="getAccountReportResponse"
element="account:getAccountReportResponse"/>
</wsdl:message>
<wsdl:message name="invalidRequestFaultMsg">
<wsdl:part name="parameters" element="tns:invalidRequestFault"/>
</wsdl:message>
<wsdl:portType name="AccountService">
<wsdl:operation name="getAccountReport">
<wsdl:input message="tns:getAccountReportRequest"/>
<wsdl:output message="tns:getAccountReportResponse"/>
<wsdl:fault message="tns:invalidRequestFaultMsg"
name="InvalidRequestFault"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="AccountServiceSOAP" type="tns:AccountService">
<soap:binding style="document" transport="
http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="getAccountReport">
<soap:operation
soapAction="
http://www.bigbank.com/Account/getAccountReport"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="InvalidRequestFault">
<soap:fault name="InvalidRequestFault" use="literal"/>
</wsdl:fault>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="AccountService">
<wsdl:port binding="tns:AccountServiceSOAP"
name="AccountServiceSOAP">
<soap:address location="
http://localhost:9080/static/services/AccountService"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
Here is the soap request for which thread hangs in axis2 code
<SOAP-ENV:Envelope xmlns:q0="http://www.bigbank.com/Account/"
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="
http://www.w3.org/2001/XMLSchema">
<SOAP-ENV:Body>
<q0:getAccountReport>
<customerID>
<accountSummaries>
<accountType>savings</accountType>
<accountNumber>1</accountNumber>
<balance>100</balance>
</accountSummaries>
<accountSummaries>
<accountType>checking</accountType>
<accountNumber>2</accountNumber>
<balance>200</balance>
</accountSummaries>
<accountSummaries>
<accountType>portfolio</accountType>
<accountNumber>3</accountNumber>
<balance>400</balance>
</accountSummaries>
<accountSummaries>
<accountType>managed</accountType>
<accountNumber>4</accountNumber>
<balance>500</balance>
</accountSummaries>
<accountSummaries>
<accountType>report</accountType>
<accountNumber>5</accountNumber>
<balance>600</balance>
</accountSummaries>
</customerID>
</q0:getAccountReport>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
here is the soap request where the thread doesn't hang. (only difference is,
just removed one of the accountSummaries)
<SOAP-ENV:Envelope xmlns:q0="http://www.bigbank.com/Account/"
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="
http://www.w3.org/2001/XMLSchema">
<SOAP-ENV:Body>
<q0:getAccountReport>
<customerID>
<accountSummaries>
<accountType>checking</accountType>
<accountNumber>2</accountNumber>
<balance>200</balance>
</accountSummaries>
<accountSummaries>
<accountType>checking</accountType>
<accountNumber>2</accountNumber>
<balance>200</balance>
</accountSummaries>
<accountSummaries>
<accountType>checking</accountType>
<accountNumber>2</accountNumber>
<balance>200</balance>
</accountSummaries>
<accountSummaries>
<accountType>checking</accountType>
<accountNumber>2</accountNumber>
<balance>200</balance>
</accountSummaries>
</customerID>
</q0:getAccountReport>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
In the debugger, I have verified OMElement passed to toDataObject() function
and it looks correct.
Any help is appreciated
Regards
Rashmi
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]