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 "Sridhar Ratna (JIRA)" <ji...@apache.org> on 2012/04/26 19:06:17 UTC
[jira] [Created] (AXIS2-5304) Attempted read on closed stream
Sridhar Ratna created AXIS2-5304:
------------------------------------
Summary: Attempted read on closed stream
Key: AXIS2-5304
URL: https://issues.apache.org/jira/browse/AXIS2-5304
Project: Axis2
Issue Type: Bug
Components: client-api
Affects Versions: 1.6.2, 1.6.1
Environment: Windows XP SP2, JDK 1.6, AXIS2-1.6.2, Jboss 4.0
Reporter: Sridhar Ratna
Priority: Blocker
When trying to download the large binary file getting the exception "org.apache.axiom.om.OMException: java.io.IOException: Attempted read on closed stream."
Have the following properties in axis2.xml
<parameter name="enableMTOM">true</parameter>
<parameter name="enableSwA">false</parameter>
WSDL is
========
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:ns1="http://org.apache.axis2/xsd" xmlns:ns="http://sample.com/sample/SampleService"
xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
xmlns:ax21="http://sample.com/sample/SampleService/xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" targetNamespace="http://sample.com/sample/SampleService">
<wsdl:documentation>
Please Type your service description here
</wsdl:documentation>
<wsdl:types>
<xs:schema elementFormDefault="qualified" targetNamespace="http://sample.com/sample/SampleService">
<xs:complexType name="SampleRequestType">
<xs:sequence>
<xs:element name="fileName" type="xs:string" minOccurs="1" maxOccurs="1"/>
<xs:element name="contentType" type="xs:string" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="SampleResponseType">
<xs:sequence>
<xs:element name="fileName" type="xs:string" minOccurs="1" maxOccurs="1" />
<xs:element name="content" type="xs:base64Binary" minOccurs="0" maxOccurs="1" />
</xs:sequence>
</xs:complexType>
<xs:element name="SampleRequest" type="ns:SampleRequestType" />
<xs:element name="SampleResponse" type="ns:SampleResponseType" />
</xs:schema>
</wsdl:types>
<wsdl:message name="SampleRequest">
<wsdl:part name="parameters" element="ns:SampleRequest" />
</wsdl:message>
<wsdl:message name="SampleResponse">
<wsdl:part name="parameters" element="ns:SampleResponse" />
</wsdl:message>
<wsdl:portType name="SampleServicePortType">
<wsdl:operation name="SampleRequest">
<wsdl:input message="ns:SampleRequest" wsaw:Action="urn:SampleRequest" />
<wsdl:output message="ns:SampleResponse" wsaw:Action="urn:SampleResponse" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="SampleServiceSoap11Binding" type="ns:SampleServicePortType">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"
style="document" />
<wsdl:operation name="SampleRequest">
<soap:operation soapAction="urn:SampleRequest" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:binding name="SampleServiceSoap12Binding" type="ns:SampleServicePortType">
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />
<wsdl:operation name="SampleRequest">
<soap12:operation soapAction="urn:SampleRequest" style="document" />
<wsdl:input>
<soap12:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap12:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:binding name="SampleServiceHttpBinding" type="ns:SampleServicePortType">
<http:binding verb="POST" />
<wsdl:operation name="SampleRequest">
<http:operation location="SampleRequest" />
<wsdl:input>
<mime:content type="text/xml" part="parameters" />
</wsdl:input>
<wsdl:output>
<mime:content type="text/xml" part="parameters" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="SampleService">
<wsdl:port name="SampleServiceHttpSoap11Endpoint" binding="ns:SampleServiceSoap11Binding">
<soap:address
location="http://localhost:8080/SampleService/services/SampleService.SampleServiceHttpSoap11Endpoint/" />
</wsdl:port>
<wsdl:port name="SampleServiceHttpSoap12Endpoint" binding="ns:SampleServiceSoap12Binding">
<soap12:address
location="http://localhost:8080/SampleService/services/SampleService.SampleServiceHttpSoap12Endpoint/" />
</wsdl:port>
<wsdl:port name="SampleServiceHttpEndpoint" binding="ns:SampleServiceHttpBinding">
<http:address
location="http://localhost:8080/SampleService/services/SampleService.SampleServiceHttpEndpoint/" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
Service class
============
public SampleResponse sampleRequest(SampleRequest req) {
try {
SampleResponse response = new SampleResponse();
SampleResponseType type = new SampleResponseType();
FileInputStream fis = new FileInputStream("c:/tmp/"+req.getSampleRequest().getFileName());
DataHandler dh = new DataHandler(new StreamDataSource(fis, req.getSampleRequest().getContentType()));
type.setContent(dh);
type.setFileName(req.getSampleRequest().getFileName());
response.setSampleResponse(type);
return response;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
client code is
public static void main(String[] args) throws Exception{
EndpointReference epr = new EndpointReference("http://localhost:8080/SampleService/services/SampleService.SampleServiceHttpSoap12Endpoint/");
ServiceClient sc = new ServiceClient();
sc.setTargetEPR(epr);
SampleRequestType type = new SampleRequestType();
type.setFileName("server.log");
type.setContentType("text/plain");
SampleRequest request = new SampleRequest();
request.setSampleRequest(type);
OMElement ele = sc.sendReceive(request.getOMElement(SampleRequest.MY_QNAME, OMAbstractFactory.getOMFactory()));
Options options = new Options();
options.setTo(epr);
options.setAction("getDocumentRequest");
options.setProperty(Constants.Configuration.ENABLE_MTOM, Constants.VALUE_TRUE);
options.setProperty(Constants.Configuration.CACHE_ATTACHMENTS,Constants.VALUE_TRUE);
options.setProperty(Constants.Configuration.ATTACHMENT_TEMP_DIR,"c:/tmmp");
options.setProperty(Constants.Configuration.FILE_SIZE_THRESHOLD, "4000000000");
sc.setOptions(options);
OMElement element = sc.sendReceive(ele);
}
Error trace is
Exception in thread "main" org.apache.axiom.om.OMException: java.io.IOException: Attempted read on closed stream.
at org.apache.axiom.om.impl.MTOMXMLStreamWriter.flush(MTOMXMLStreamWriter.java:259)
at org.apache.axiom.om.impl.llom.OMSerializableImpl.serializeAndConsume(OMSerializableImpl.java:190)
at org.apache.axis2.transport.http.SOAPMessageFormatter.writeTo(SOAPMessageFormatter.java:74)
at org.apache.axis2.transport.http.AxisRequestEntity.writeRequest(AxisRequestEntity.java:84)
at org.apache.commons.httpclient.methods.EntityEnclosingMethod.writeRequestBody(EntityEnclosingMethod.java:499)
at org.apache.commons.httpclient.HttpMethodBase.writeRequest(HttpMethodBase.java:2114)
at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1096)
at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398)
at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
at org.apache.axis2.transport.http.AbstractHTTPSender.executeMethod(AbstractHTTPSender.java:621)
at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:193)
at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:75)
at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:404)
at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:231)
at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:443)
at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:406)
at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:555)
at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:531)
at com.sample.sampleservice.client.Client.main(Client.java:71)
Caused by: java.io.IOException: Attempted read on closed stream.
at org.apache.commons.httpclient.AutoCloseInputStream.isReadAllowed(AutoCloseInputStream.java:183)
at org.apache.commons.httpclient.AutoCloseInputStream.read(AutoCloseInputStream.java:107)
at java.io.FilterInputStream.read(FilterInputStream.java:111)
at org.apache.axiom.om.util.DetachableInputStream.read(DetachableInputStream.java:147)
at org.apache.james.mime4j.io.BufferedLineReaderInputStream.fillBuffer(BufferedLineReaderInputStream.java:111)
at org.apache.james.mime4j.io.MimeBoundaryInputStream.fillBuffer(MimeBoundaryInputStream.java:223)
at org.apache.james.mime4j.io.MimeBoundaryInputStream.read(MimeBoundaryInputStream.java:157)
at org.apache.james.mime4j.io.BufferedLineReaderInputStream.fillBuffer(BufferedLineReaderInputStream.java:111)
at org.apache.james.mime4j.io.BufferedLineReaderInputStream.read(BufferedLineReaderInputStream.java:158)
at org.apache.james.mime4j.io.LineReaderInputStreamAdaptor.read(LineReaderInputStreamAdaptor.java:67)
at java.io.FilterInputStream.read(FilterInputStream.java:111)
at org.apache.axiom.om.util.DetachableInputStream.read(DetachableInputStream.java:147)
at java.io.FilterInputStream.read(FilterInputStream.java:90)
at org.apache.axiom.om.util.DetachableInputStream.read(DetachableInputStream.java:159)
at org.apache.axiom.attachments.impl.BufferUtils.inputStream2OutputStream(BufferUtils.java:84)
at org.apache.axiom.om.impl.MTOMXMLStreamWriter.flush(MTOMXMLStreamWriter.java:248)
... 21 more
now changed the client code to the following
SampleServiceStub stub = new SampleServiceStub();
stub._getServiceClient().getOptions().setProperty(Constants.Configuration.ENABLE_MTOM, Constants.VALUE_TRUE);
stub._getServiceClient().getOptions().setTimeOutInMilliSeconds(1000*60*10 );
stub._getServiceClient().getOptions().setProperty(Constants.Configuration.CACHE_ATTACHMENTS, Constants.VALUE_TRUE);
stub._getServiceClient().getOptions().setProperty(Constants.Configuration.ATTACHMENT_TEMP_DIR, "c:/tmp");
stub._getServiceClient().getOptions().setProperty(Constants.Configuration.FILE_SIZE_THRESHOLD, "400000");
SampleRequestType type = new SampleRequestType();
type.setFileName("server.log");
type.setContentType("text/plain");
SampleRequest request = new SampleRequest();
request.setSampleRequest(type);
SampleResponse response = stub.sampleRequest(request);
InputStream in = response.getSampleResponse().getContent().getInputStream();
This time got the following
org.apache.axiom.om.OMException: org.apache.axiom.ext.io.StreamCopyException: Error reading from source
at org.apache.axiom.attachments.PartContentFactory.createPartContent(PartContentFactory.java:153)
at org.apache.axiom.attachments.PartImpl.fetch(PartImpl.java:176)
at org.apache.axiom.attachments.PartImpl.getContent(PartImpl.java:149)
at org.apache.axiom.attachments.PartImpl.getInputStream(PartImpl.java:224)
at org.apache.axiom.attachments.PartDataSource.getInputStream(PartDataSource.java:44)
at javax.activation.DataHandler.getInputStream(DataHandler.java:237)
at com.sample.sampleservice.client.Client.main(Client.java:109)
Caused by: org.apache.axiom.ext.io.StreamCopyException: Error reading from source
at org.apache.axiom.attachments.utils.BAAOutputStream.readFrom(BAAOutputStream.java:114)
at org.apache.axiom.attachments.impl.BufferUtils.inputStream2OutputStream(BufferUtils.java:107)
at org.apache.axiom.attachments.PartContentFactory.createPartContent(PartContentFactory.java:125)
... 6 more
Caused by: java.io.IOException: Attempted read on closed stream.
at org.apache.commons.httpclient.AutoCloseInputStream.isReadAllowed(AutoCloseInputStream.java:183)
at org.apache.commons.httpclient.AutoCloseInputStream.read(AutoCloseInputStream.java:107)
at java.io.FilterInputStream.read(FilterInputStream.java:111)
at org.apache.axiom.om.util.DetachableInputStream.read(DetachableInputStream.java:147)
at org.apache.james.mime4j.io.BufferedLineReaderInputStream.fillBuffer(BufferedLineReaderInputStream.java:111)
at org.apache.james.mime4j.io.MimeBoundaryInputStream.fillBuffer(MimeBoundaryInputStream.java:223)
at org.apache.james.mime4j.io.MimeBoundaryInputStream.read(MimeBoundaryInputStream.java:157)
at org.apache.james.mime4j.io.BufferedLineReaderInputStream.fillBuffer(BufferedLineReaderInputStream.java:111)
at org.apache.james.mime4j.io.BufferedLineReaderInputStream.read(BufferedLineReaderInputStream.java:158)
at org.apache.james.mime4j.io.LineReaderInputStreamAdaptor.read(LineReaderInputStreamAdaptor.java:67)
at org.apache.axiom.attachments.utils.BAAOutputStream.readFrom(BAAOutputStream.java:112)
... 8 more
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
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
[jira] [Commented] (AXIS2-5304) Attempted read on closed stream
Posted by "Andreas Veithen (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/AXIS2-5304?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13264358#comment-13264358 ]
Andreas Veithen commented on AXIS2-5304:
----------------------------------------
You declared that the issue also occurs with Axis2 1.6.1 (i.e. with Axiom 1.2.12). What is the exception that you get with that version?
> Attempted read on closed stream
> -------------------------------
>
> Key: AXIS2-5304
> URL: https://issues.apache.org/jira/browse/AXIS2-5304
> Project: Axis2
> Issue Type: Bug
> Components: client-api
> Affects Versions: 1.6.1, 1.6.2
> Environment: Windows XP SP2, JDK 1.6, AXIS2-1.6.2, Jboss 4.0
> Reporter: Sridhar Ratna
> Priority: Blocker
> Labels: axiom_1.2.12, axiom_1.2.13, axis2_1.6.1, axis2_1.6.2, webservice_download_client
> Attachments: SampleService.zip, SampleServiceClient.zip
>
>
> When trying to download the large binary file getting the exception "org.apache.axiom.om.OMException: java.io.IOException: Attempted read on closed stream."
> Have the following properties in axis2.xml
> <parameter name="enableMTOM">true</parameter>
> <parameter name="enableSwA">false</parameter>
> WSDL is
> ========
> <?xml version="1.0" encoding="UTF-8"?>
> <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
> xmlns:ns1="http://org.apache.axis2/xsd" xmlns:ns="http://sample.com/sample/SampleService"
> xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
> xmlns:ax21="http://sample.com/sample/SampleService/xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema"
> xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
> xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" targetNamespace="http://sample.com/sample/SampleService">
> <wsdl:documentation>
> Please Type your service description here
> </wsdl:documentation>
> <wsdl:types>
> <xs:schema elementFormDefault="qualified" targetNamespace="http://sample.com/sample/SampleService">
>
> <xs:complexType name="SampleRequestType">
> <xs:sequence>
> <xs:element name="fileName" type="xs:string" minOccurs="1" maxOccurs="1"/>
> <xs:element name="contentType" type="xs:string" minOccurs="0" maxOccurs="1"/>
> </xs:sequence>
> </xs:complexType>
> <xs:complexType name="SampleResponseType">
> <xs:sequence>
> <xs:element name="fileName" type="xs:string" minOccurs="1" maxOccurs="1" />
> <xs:element name="content" type="xs:base64Binary" minOccurs="0" maxOccurs="1" />
> </xs:sequence>
> </xs:complexType>
>
> <xs:element name="SampleRequest" type="ns:SampleRequestType" />
> <xs:element name="SampleResponse" type="ns:SampleResponseType" />
> </xs:schema>
> </wsdl:types>
> <wsdl:message name="SampleRequest">
> <wsdl:part name="parameters" element="ns:SampleRequest" />
> </wsdl:message>
> <wsdl:message name="SampleResponse">
> <wsdl:part name="parameters" element="ns:SampleResponse" />
> </wsdl:message>
> <wsdl:portType name="SampleServicePortType">
> <wsdl:operation name="SampleRequest">
> <wsdl:input message="ns:SampleRequest" wsaw:Action="urn:SampleRequest" />
> <wsdl:output message="ns:SampleResponse" wsaw:Action="urn:SampleResponse" />
> </wsdl:operation>
> </wsdl:portType>
> <wsdl:binding name="SampleServiceSoap11Binding" type="ns:SampleServicePortType">
> <soap:binding transport="http://schemas.xmlsoap.org/soap/http"
> style="document" />
> <wsdl:operation name="SampleRequest">
> <soap:operation soapAction="urn:SampleRequest" style="document" />
> <wsdl:input>
> <soap:body use="literal" />
> </wsdl:input>
> <wsdl:output>
> <soap:body use="literal" />
> </wsdl:output>
> </wsdl:operation>
> </wsdl:binding>
> <wsdl:binding name="SampleServiceSoap12Binding" type="ns:SampleServicePortType">
> <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />
> <wsdl:operation name="SampleRequest">
> <soap12:operation soapAction="urn:SampleRequest" style="document" />
> <wsdl:input>
> <soap12:body use="literal" />
> </wsdl:input>
> <wsdl:output>
> <soap12:body use="literal" />
> </wsdl:output>
> </wsdl:operation>
> </wsdl:binding>
> <wsdl:binding name="SampleServiceHttpBinding" type="ns:SampleServicePortType">
> <http:binding verb="POST" />
> <wsdl:operation name="SampleRequest">
> <http:operation location="SampleRequest" />
> <wsdl:input>
> <mime:content type="text/xml" part="parameters" />
> </wsdl:input>
> <wsdl:output>
> <mime:content type="text/xml" part="parameters" />
> </wsdl:output>
> </wsdl:operation>
> </wsdl:binding>
> <wsdl:service name="SampleService">
> <wsdl:port name="SampleServiceHttpSoap11Endpoint" binding="ns:SampleServiceSoap11Binding">
> <soap:address
> location="http://localhost:8080/SampleService/services/SampleService.SampleServiceHttpSoap11Endpoint/" />
> </wsdl:port>
> <wsdl:port name="SampleServiceHttpSoap12Endpoint" binding="ns:SampleServiceSoap12Binding">
> <soap12:address
> location="http://localhost:8080/SampleService/services/SampleService.SampleServiceHttpSoap12Endpoint/" />
> </wsdl:port>
> <wsdl:port name="SampleServiceHttpEndpoint" binding="ns:SampleServiceHttpBinding">
> <http:address
> location="http://localhost:8080/SampleService/services/SampleService.SampleServiceHttpEndpoint/" />
> </wsdl:port>
> </wsdl:service>
> </wsdl:definitions>
> Service class
> ============
> public SampleResponse sampleRequest(SampleRequest req) {
> try {
> SampleResponse response = new SampleResponse();
> SampleResponseType type = new SampleResponseType();
> FileInputStream fis = new FileInputStream("c:/tmp/"+req.getSampleRequest().getFileName());
> DataHandler dh = new DataHandler(new StreamDataSource(fis, req.getSampleRequest().getContentType()));
> type.setContent(dh);
> type.setFileName(req.getSampleRequest().getFileName());
> response.setSampleResponse(type);
> return response;
> } catch (Exception e) {
> e.printStackTrace();
> }
> return null;
> }
> client code is
> public static void main(String[] args) throws Exception{
>
> EndpointReference epr = new EndpointReference("http://localhost:8080/SampleService/services/SampleService.SampleServiceHttpSoap12Endpoint/");
> ServiceClient sc = new ServiceClient();
> sc.setTargetEPR(epr);
>
> SampleRequestType type = new SampleRequestType();
> type.setFileName("server.log");
> type.setContentType("text/plain");
> SampleRequest request = new SampleRequest();
> request.setSampleRequest(type);
> OMElement ele = sc.sendReceive(request.getOMElement(SampleRequest.MY_QNAME, OMAbstractFactory.getOMFactory()));
>
> Options options = new Options();
> options.setTo(epr);
> options.setAction("getDocumentRequest");
> options.setProperty(Constants.Configuration.ENABLE_MTOM, Constants.VALUE_TRUE);
> options.setProperty(Constants.Configuration.CACHE_ATTACHMENTS,Constants.VALUE_TRUE);
> options.setProperty(Constants.Configuration.ATTACHMENT_TEMP_DIR,"c:/tmmp");
> options.setProperty(Constants.Configuration.FILE_SIZE_THRESHOLD, "4000000000");
>
> sc.setOptions(options);
> OMElement element = sc.sendReceive(ele);
> }
> Error trace is
> Exception in thread "main" org.apache.axiom.om.OMException: java.io.IOException: Attempted read on closed stream.
> at org.apache.axiom.om.impl.MTOMXMLStreamWriter.flush(MTOMXMLStreamWriter.java:259)
> at org.apache.axiom.om.impl.llom.OMSerializableImpl.serializeAndConsume(OMSerializableImpl.java:190)
> at org.apache.axis2.transport.http.SOAPMessageFormatter.writeTo(SOAPMessageFormatter.java:74)
> at org.apache.axis2.transport.http.AxisRequestEntity.writeRequest(AxisRequestEntity.java:84)
> at org.apache.commons.httpclient.methods.EntityEnclosingMethod.writeRequestBody(EntityEnclosingMethod.java:499)
> at org.apache.commons.httpclient.HttpMethodBase.writeRequest(HttpMethodBase.java:2114)
> at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1096)
> at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398)
> at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
> at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
> at org.apache.axis2.transport.http.AbstractHTTPSender.executeMethod(AbstractHTTPSender.java:621)
> at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:193)
> at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:75)
> at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:404)
> at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:231)
> at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:443)
> at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:406)
> at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
> at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
> at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:555)
> at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:531)
> at com.sample.sampleservice.client.Client.main(Client.java:71)
> Caused by: java.io.IOException: Attempted read on closed stream.
> at org.apache.commons.httpclient.AutoCloseInputStream.isReadAllowed(AutoCloseInputStream.java:183)
> at org.apache.commons.httpclient.AutoCloseInputStream.read(AutoCloseInputStream.java:107)
> at java.io.FilterInputStream.read(FilterInputStream.java:111)
> at org.apache.axiom.om.util.DetachableInputStream.read(DetachableInputStream.java:147)
> at org.apache.james.mime4j.io.BufferedLineReaderInputStream.fillBuffer(BufferedLineReaderInputStream.java:111)
> at org.apache.james.mime4j.io.MimeBoundaryInputStream.fillBuffer(MimeBoundaryInputStream.java:223)
> at org.apache.james.mime4j.io.MimeBoundaryInputStream.read(MimeBoundaryInputStream.java:157)
> at org.apache.james.mime4j.io.BufferedLineReaderInputStream.fillBuffer(BufferedLineReaderInputStream.java:111)
> at org.apache.james.mime4j.io.BufferedLineReaderInputStream.read(BufferedLineReaderInputStream.java:158)
> at org.apache.james.mime4j.io.LineReaderInputStreamAdaptor.read(LineReaderInputStreamAdaptor.java:67)
> at java.io.FilterInputStream.read(FilterInputStream.java:111)
> at org.apache.axiom.om.util.DetachableInputStream.read(DetachableInputStream.java:147)
> at java.io.FilterInputStream.read(FilterInputStream.java:90)
> at org.apache.axiom.om.util.DetachableInputStream.read(DetachableInputStream.java:159)
> at org.apache.axiom.attachments.impl.BufferUtils.inputStream2OutputStream(BufferUtils.java:84)
> at org.apache.axiom.om.impl.MTOMXMLStreamWriter.flush(MTOMXMLStreamWriter.java:248)
> ... 21 more
> now changed the client code to the following
> SampleServiceStub stub = new SampleServiceStub();
> stub._getServiceClient().getOptions().setProperty(Constants.Configuration.ENABLE_MTOM, Constants.VALUE_TRUE);
> stub._getServiceClient().getOptions().setTimeOutInMilliSeconds(1000*60*10 );
> stub._getServiceClient().getOptions().setProperty(Constants.Configuration.CACHE_ATTACHMENTS, Constants.VALUE_TRUE);
> stub._getServiceClient().getOptions().setProperty(Constants.Configuration.ATTACHMENT_TEMP_DIR, "c:/tmp");
> stub._getServiceClient().getOptions().setProperty(Constants.Configuration.FILE_SIZE_THRESHOLD, "400000");
>
> SampleRequestType type = new SampleRequestType();
> type.setFileName("server.log");
> type.setContentType("text/plain");
>
> SampleRequest request = new SampleRequest();
> request.setSampleRequest(type);
>
> SampleResponse response = stub.sampleRequest(request);
> InputStream in = response.getSampleResponse().getContent().getInputStream();
> This time got the following
> org.apache.axiom.om.OMException: org.apache.axiom.ext.io.StreamCopyException: Error reading from source
> at org.apache.axiom.attachments.PartContentFactory.createPartContent(PartContentFactory.java:153)
> at org.apache.axiom.attachments.PartImpl.fetch(PartImpl.java:176)
> at org.apache.axiom.attachments.PartImpl.getContent(PartImpl.java:149)
> at org.apache.axiom.attachments.PartImpl.getInputStream(PartImpl.java:224)
> at org.apache.axiom.attachments.PartDataSource.getInputStream(PartDataSource.java:44)
> at javax.activation.DataHandler.getInputStream(DataHandler.java:237)
> at com.sample.sampleservice.client.Client.main(Client.java:109)
> Caused by: org.apache.axiom.ext.io.StreamCopyException: Error reading from source
> at org.apache.axiom.attachments.utils.BAAOutputStream.readFrom(BAAOutputStream.java:114)
> at org.apache.axiom.attachments.impl.BufferUtils.inputStream2OutputStream(BufferUtils.java:107)
> at org.apache.axiom.attachments.PartContentFactory.createPartContent(PartContentFactory.java:125)
> ... 6 more
> Caused by: java.io.IOException: Attempted read on closed stream.
> at org.apache.commons.httpclient.AutoCloseInputStream.isReadAllowed(AutoCloseInputStream.java:183)
> at org.apache.commons.httpclient.AutoCloseInputStream.read(AutoCloseInputStream.java:107)
> at java.io.FilterInputStream.read(FilterInputStream.java:111)
> at org.apache.axiom.om.util.DetachableInputStream.read(DetachableInputStream.java:147)
> at org.apache.james.mime4j.io.BufferedLineReaderInputStream.fillBuffer(BufferedLineReaderInputStream.java:111)
> at org.apache.james.mime4j.io.MimeBoundaryInputStream.fillBuffer(MimeBoundaryInputStream.java:223)
> at org.apache.james.mime4j.io.MimeBoundaryInputStream.read(MimeBoundaryInputStream.java:157)
> at org.apache.james.mime4j.io.BufferedLineReaderInputStream.fillBuffer(BufferedLineReaderInputStream.java:111)
> at org.apache.james.mime4j.io.BufferedLineReaderInputStream.read(BufferedLineReaderInputStream.java:158)
> at org.apache.james.mime4j.io.LineReaderInputStreamAdaptor.read(LineReaderInputStreamAdaptor.java:67)
> at org.apache.axiom.attachments.utils.BAAOutputStream.readFrom(BAAOutputStream.java:112)
> ... 8 more
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
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
[jira] [Commented] (AXIS2-5304) Attempted read on closed stream
Posted by "Manfred Weiss (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/AXIS2-5304?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13443136#comment-13443136 ]
Manfred Weiss commented on AXIS2-5304:
--------------------------------------
Hi, we do have the same problem. I have not been able to reproduce this issue with axis2 1.6.1. But there is another problem in Axis2 1.6.1 and Base64-Content with line-breaks.
So from my point of view there is no 1.6.X version we are able to use.
> Attempted read on closed stream
> -------------------------------
>
> Key: AXIS2-5304
> URL: https://issues.apache.org/jira/browse/AXIS2-5304
> Project: Axis2
> Issue Type: Bug
> Components: client-api
> Affects Versions: 1.6.1, 1.6.2
> Environment: Windows XP SP2, JDK 1.6, AXIS2-1.6.2, Jboss 4.0
> Reporter: Sridhar Ratna
> Priority: Blocker
> Labels: axiom_1.2.12, axiom_1.2.13, axis2_1.6.1, axis2_1.6.2, webservice_download_client
> Attachments: SampleServiceClient.zip, SampleService.zip
>
>
> When trying to download the large binary file getting the exception "org.apache.axiom.om.OMException: java.io.IOException: Attempted read on closed stream."
> Have the following properties in axis2.xml
> <parameter name="enableMTOM">true</parameter>
> <parameter name="enableSwA">false</parameter>
> WSDL is
> ========
> <?xml version="1.0" encoding="UTF-8"?>
> <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
> xmlns:ns1="http://org.apache.axis2/xsd" xmlns:ns="http://sample.com/sample/SampleService"
> xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
> xmlns:ax21="http://sample.com/sample/SampleService/xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema"
> xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
> xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" targetNamespace="http://sample.com/sample/SampleService">
> <wsdl:documentation>
> Please Type your service description here
> </wsdl:documentation>
> <wsdl:types>
> <xs:schema elementFormDefault="qualified" targetNamespace="http://sample.com/sample/SampleService">
>
> <xs:complexType name="SampleRequestType">
> <xs:sequence>
> <xs:element name="fileName" type="xs:string" minOccurs="1" maxOccurs="1"/>
> <xs:element name="contentType" type="xs:string" minOccurs="0" maxOccurs="1"/>
> </xs:sequence>
> </xs:complexType>
> <xs:complexType name="SampleResponseType">
> <xs:sequence>
> <xs:element name="fileName" type="xs:string" minOccurs="1" maxOccurs="1" />
> <xs:element name="content" type="xs:base64Binary" minOccurs="0" maxOccurs="1" />
> </xs:sequence>
> </xs:complexType>
>
> <xs:element name="SampleRequest" type="ns:SampleRequestType" />
> <xs:element name="SampleResponse" type="ns:SampleResponseType" />
> </xs:schema>
> </wsdl:types>
> <wsdl:message name="SampleRequest">
> <wsdl:part name="parameters" element="ns:SampleRequest" />
> </wsdl:message>
> <wsdl:message name="SampleResponse">
> <wsdl:part name="parameters" element="ns:SampleResponse" />
> </wsdl:message>
> <wsdl:portType name="SampleServicePortType">
> <wsdl:operation name="SampleRequest">
> <wsdl:input message="ns:SampleRequest" wsaw:Action="urn:SampleRequest" />
> <wsdl:output message="ns:SampleResponse" wsaw:Action="urn:SampleResponse" />
> </wsdl:operation>
> </wsdl:portType>
> <wsdl:binding name="SampleServiceSoap11Binding" type="ns:SampleServicePortType">
> <soap:binding transport="http://schemas.xmlsoap.org/soap/http"
> style="document" />
> <wsdl:operation name="SampleRequest">
> <soap:operation soapAction="urn:SampleRequest" style="document" />
> <wsdl:input>
> <soap:body use="literal" />
> </wsdl:input>
> <wsdl:output>
> <soap:body use="literal" />
> </wsdl:output>
> </wsdl:operation>
> </wsdl:binding>
> <wsdl:binding name="SampleServiceSoap12Binding" type="ns:SampleServicePortType">
> <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />
> <wsdl:operation name="SampleRequest">
> <soap12:operation soapAction="urn:SampleRequest" style="document" />
> <wsdl:input>
> <soap12:body use="literal" />
> </wsdl:input>
> <wsdl:output>
> <soap12:body use="literal" />
> </wsdl:output>
> </wsdl:operation>
> </wsdl:binding>
> <wsdl:binding name="SampleServiceHttpBinding" type="ns:SampleServicePortType">
> <http:binding verb="POST" />
> <wsdl:operation name="SampleRequest">
> <http:operation location="SampleRequest" />
> <wsdl:input>
> <mime:content type="text/xml" part="parameters" />
> </wsdl:input>
> <wsdl:output>
> <mime:content type="text/xml" part="parameters" />
> </wsdl:output>
> </wsdl:operation>
> </wsdl:binding>
> <wsdl:service name="SampleService">
> <wsdl:port name="SampleServiceHttpSoap11Endpoint" binding="ns:SampleServiceSoap11Binding">
> <soap:address
> location="http://localhost:8080/SampleService/services/SampleService.SampleServiceHttpSoap11Endpoint/" />
> </wsdl:port>
> <wsdl:port name="SampleServiceHttpSoap12Endpoint" binding="ns:SampleServiceSoap12Binding">
> <soap12:address
> location="http://localhost:8080/SampleService/services/SampleService.SampleServiceHttpSoap12Endpoint/" />
> </wsdl:port>
> <wsdl:port name="SampleServiceHttpEndpoint" binding="ns:SampleServiceHttpBinding">
> <http:address
> location="http://localhost:8080/SampleService/services/SampleService.SampleServiceHttpEndpoint/" />
> </wsdl:port>
> </wsdl:service>
> </wsdl:definitions>
> Service class
> ============
> public SampleResponse sampleRequest(SampleRequest req) {
> try {
> SampleResponse response = new SampleResponse();
> SampleResponseType type = new SampleResponseType();
> FileInputStream fis = new FileInputStream("c:/tmp/"+req.getSampleRequest().getFileName());
> DataHandler dh = new DataHandler(new StreamDataSource(fis, req.getSampleRequest().getContentType()));
> type.setContent(dh);
> type.setFileName(req.getSampleRequest().getFileName());
> response.setSampleResponse(type);
> return response;
> } catch (Exception e) {
> e.printStackTrace();
> }
> return null;
> }
> client code is
> public static void main(String[] args) throws Exception{
>
> EndpointReference epr = new EndpointReference("http://localhost:8080/SampleService/services/SampleService.SampleServiceHttpSoap12Endpoint/");
> ServiceClient sc = new ServiceClient();
> sc.setTargetEPR(epr);
>
> SampleRequestType type = new SampleRequestType();
> type.setFileName("server.log");
> type.setContentType("text/plain");
> SampleRequest request = new SampleRequest();
> request.setSampleRequest(type);
> OMElement ele = sc.sendReceive(request.getOMElement(SampleRequest.MY_QNAME, OMAbstractFactory.getOMFactory()));
>
> Options options = new Options();
> options.setTo(epr);
> options.setAction("getDocumentRequest");
> options.setProperty(Constants.Configuration.ENABLE_MTOM, Constants.VALUE_TRUE);
> options.setProperty(Constants.Configuration.CACHE_ATTACHMENTS,Constants.VALUE_TRUE);
> options.setProperty(Constants.Configuration.ATTACHMENT_TEMP_DIR,"c:/tmmp");
> options.setProperty(Constants.Configuration.FILE_SIZE_THRESHOLD, "4000000000");
>
> sc.setOptions(options);
> OMElement element = sc.sendReceive(ele);
> }
> Error trace is
> Exception in thread "main" org.apache.axiom.om.OMException: java.io.IOException: Attempted read on closed stream.
> at org.apache.axiom.om.impl.MTOMXMLStreamWriter.flush(MTOMXMLStreamWriter.java:259)
> at org.apache.axiom.om.impl.llom.OMSerializableImpl.serializeAndConsume(OMSerializableImpl.java:190)
> at org.apache.axis2.transport.http.SOAPMessageFormatter.writeTo(SOAPMessageFormatter.java:74)
> at org.apache.axis2.transport.http.AxisRequestEntity.writeRequest(AxisRequestEntity.java:84)
> at org.apache.commons.httpclient.methods.EntityEnclosingMethod.writeRequestBody(EntityEnclosingMethod.java:499)
> at org.apache.commons.httpclient.HttpMethodBase.writeRequest(HttpMethodBase.java:2114)
> at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1096)
> at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398)
> at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
> at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
> at org.apache.axis2.transport.http.AbstractHTTPSender.executeMethod(AbstractHTTPSender.java:621)
> at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:193)
> at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:75)
> at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:404)
> at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:231)
> at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:443)
> at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:406)
> at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
> at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
> at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:555)
> at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:531)
> at com.sample.sampleservice.client.Client.main(Client.java:71)
> Caused by: java.io.IOException: Attempted read on closed stream.
> at org.apache.commons.httpclient.AutoCloseInputStream.isReadAllowed(AutoCloseInputStream.java:183)
> at org.apache.commons.httpclient.AutoCloseInputStream.read(AutoCloseInputStream.java:107)
> at java.io.FilterInputStream.read(FilterInputStream.java:111)
> at org.apache.axiom.om.util.DetachableInputStream.read(DetachableInputStream.java:147)
> at org.apache.james.mime4j.io.BufferedLineReaderInputStream.fillBuffer(BufferedLineReaderInputStream.java:111)
> at org.apache.james.mime4j.io.MimeBoundaryInputStream.fillBuffer(MimeBoundaryInputStream.java:223)
> at org.apache.james.mime4j.io.MimeBoundaryInputStream.read(MimeBoundaryInputStream.java:157)
> at org.apache.james.mime4j.io.BufferedLineReaderInputStream.fillBuffer(BufferedLineReaderInputStream.java:111)
> at org.apache.james.mime4j.io.BufferedLineReaderInputStream.read(BufferedLineReaderInputStream.java:158)
> at org.apache.james.mime4j.io.LineReaderInputStreamAdaptor.read(LineReaderInputStreamAdaptor.java:67)
> at java.io.FilterInputStream.read(FilterInputStream.java:111)
> at org.apache.axiom.om.util.DetachableInputStream.read(DetachableInputStream.java:147)
> at java.io.FilterInputStream.read(FilterInputStream.java:90)
> at org.apache.axiom.om.util.DetachableInputStream.read(DetachableInputStream.java:159)
> at org.apache.axiom.attachments.impl.BufferUtils.inputStream2OutputStream(BufferUtils.java:84)
> at org.apache.axiom.om.impl.MTOMXMLStreamWriter.flush(MTOMXMLStreamWriter.java:248)
> ... 21 more
> now changed the client code to the following
> SampleServiceStub stub = new SampleServiceStub();
> stub._getServiceClient().getOptions().setProperty(Constants.Configuration.ENABLE_MTOM, Constants.VALUE_TRUE);
> stub._getServiceClient().getOptions().setTimeOutInMilliSeconds(1000*60*10 );
> stub._getServiceClient().getOptions().setProperty(Constants.Configuration.CACHE_ATTACHMENTS, Constants.VALUE_TRUE);
> stub._getServiceClient().getOptions().setProperty(Constants.Configuration.ATTACHMENT_TEMP_DIR, "c:/tmp");
> stub._getServiceClient().getOptions().setProperty(Constants.Configuration.FILE_SIZE_THRESHOLD, "400000");
>
> SampleRequestType type = new SampleRequestType();
> type.setFileName("server.log");
> type.setContentType("text/plain");
>
> SampleRequest request = new SampleRequest();
> request.setSampleRequest(type);
>
> SampleResponse response = stub.sampleRequest(request);
> InputStream in = response.getSampleResponse().getContent().getInputStream();
> This time got the following
> org.apache.axiom.om.OMException: org.apache.axiom.ext.io.StreamCopyException: Error reading from source
> at org.apache.axiom.attachments.PartContentFactory.createPartContent(PartContentFactory.java:153)
> at org.apache.axiom.attachments.PartImpl.fetch(PartImpl.java:176)
> at org.apache.axiom.attachments.PartImpl.getContent(PartImpl.java:149)
> at org.apache.axiom.attachments.PartImpl.getInputStream(PartImpl.java:224)
> at org.apache.axiom.attachments.PartDataSource.getInputStream(PartDataSource.java:44)
> at javax.activation.DataHandler.getInputStream(DataHandler.java:237)
> at com.sample.sampleservice.client.Client.main(Client.java:109)
> Caused by: org.apache.axiom.ext.io.StreamCopyException: Error reading from source
> at org.apache.axiom.attachments.utils.BAAOutputStream.readFrom(BAAOutputStream.java:114)
> at org.apache.axiom.attachments.impl.BufferUtils.inputStream2OutputStream(BufferUtils.java:107)
> at org.apache.axiom.attachments.PartContentFactory.createPartContent(PartContentFactory.java:125)
> ... 6 more
> Caused by: java.io.IOException: Attempted read on closed stream.
> at org.apache.commons.httpclient.AutoCloseInputStream.isReadAllowed(AutoCloseInputStream.java:183)
> at org.apache.commons.httpclient.AutoCloseInputStream.read(AutoCloseInputStream.java:107)
> at java.io.FilterInputStream.read(FilterInputStream.java:111)
> at org.apache.axiom.om.util.DetachableInputStream.read(DetachableInputStream.java:147)
> at org.apache.james.mime4j.io.BufferedLineReaderInputStream.fillBuffer(BufferedLineReaderInputStream.java:111)
> at org.apache.james.mime4j.io.MimeBoundaryInputStream.fillBuffer(MimeBoundaryInputStream.java:223)
> at org.apache.james.mime4j.io.MimeBoundaryInputStream.read(MimeBoundaryInputStream.java:157)
> at org.apache.james.mime4j.io.BufferedLineReaderInputStream.fillBuffer(BufferedLineReaderInputStream.java:111)
> at org.apache.james.mime4j.io.BufferedLineReaderInputStream.read(BufferedLineReaderInputStream.java:158)
> at org.apache.james.mime4j.io.LineReaderInputStreamAdaptor.read(LineReaderInputStreamAdaptor.java:67)
> at org.apache.axiom.attachments.utils.BAAOutputStream.readFrom(BAAOutputStream.java:112)
> ... 8 more
--
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
[jira] [Commented] (AXIS2-5304) Attempted read on closed stream
Posted by "AndyB (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/AXIS2-5304?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13443169#comment-13443169 ]
AndyB commented on AXIS2-5304:
------------------------------
Hi, in our case the problem was found on the server side. I'm on the client side and not familiar with the solution details, but after some investigations they told me that they closed the sending stream to early. Now it is fixed and everything is fine. So my recommendation is to take also the server-side-service implementation into account for further analysis.
> Attempted read on closed stream
> -------------------------------
>
> Key: AXIS2-5304
> URL: https://issues.apache.org/jira/browse/AXIS2-5304
> Project: Axis2
> Issue Type: Bug
> Components: client-api
> Affects Versions: 1.6.1, 1.6.2
> Environment: Windows XP SP2, JDK 1.6, AXIS2-1.6.2, Jboss 4.0
> Reporter: Sridhar Ratna
> Priority: Blocker
> Labels: axiom_1.2.12, axiom_1.2.13, axis2_1.6.1, axis2_1.6.2, webservice_download_client
> Attachments: SampleServiceClient.zip, SampleService.zip
>
>
> When trying to download the large binary file getting the exception "org.apache.axiom.om.OMException: java.io.IOException: Attempted read on closed stream."
> Have the following properties in axis2.xml
> <parameter name="enableMTOM">true</parameter>
> <parameter name="enableSwA">false</parameter>
> WSDL is
> ========
> <?xml version="1.0" encoding="UTF-8"?>
> <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
> xmlns:ns1="http://org.apache.axis2/xsd" xmlns:ns="http://sample.com/sample/SampleService"
> xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
> xmlns:ax21="http://sample.com/sample/SampleService/xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema"
> xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
> xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" targetNamespace="http://sample.com/sample/SampleService">
> <wsdl:documentation>
> Please Type your service description here
> </wsdl:documentation>
> <wsdl:types>
> <xs:schema elementFormDefault="qualified" targetNamespace="http://sample.com/sample/SampleService">
>
> <xs:complexType name="SampleRequestType">
> <xs:sequence>
> <xs:element name="fileName" type="xs:string" minOccurs="1" maxOccurs="1"/>
> <xs:element name="contentType" type="xs:string" minOccurs="0" maxOccurs="1"/>
> </xs:sequence>
> </xs:complexType>
> <xs:complexType name="SampleResponseType">
> <xs:sequence>
> <xs:element name="fileName" type="xs:string" minOccurs="1" maxOccurs="1" />
> <xs:element name="content" type="xs:base64Binary" minOccurs="0" maxOccurs="1" />
> </xs:sequence>
> </xs:complexType>
>
> <xs:element name="SampleRequest" type="ns:SampleRequestType" />
> <xs:element name="SampleResponse" type="ns:SampleResponseType" />
> </xs:schema>
> </wsdl:types>
> <wsdl:message name="SampleRequest">
> <wsdl:part name="parameters" element="ns:SampleRequest" />
> </wsdl:message>
> <wsdl:message name="SampleResponse">
> <wsdl:part name="parameters" element="ns:SampleResponse" />
> </wsdl:message>
> <wsdl:portType name="SampleServicePortType">
> <wsdl:operation name="SampleRequest">
> <wsdl:input message="ns:SampleRequest" wsaw:Action="urn:SampleRequest" />
> <wsdl:output message="ns:SampleResponse" wsaw:Action="urn:SampleResponse" />
> </wsdl:operation>
> </wsdl:portType>
> <wsdl:binding name="SampleServiceSoap11Binding" type="ns:SampleServicePortType">
> <soap:binding transport="http://schemas.xmlsoap.org/soap/http"
> style="document" />
> <wsdl:operation name="SampleRequest">
> <soap:operation soapAction="urn:SampleRequest" style="document" />
> <wsdl:input>
> <soap:body use="literal" />
> </wsdl:input>
> <wsdl:output>
> <soap:body use="literal" />
> </wsdl:output>
> </wsdl:operation>
> </wsdl:binding>
> <wsdl:binding name="SampleServiceSoap12Binding" type="ns:SampleServicePortType">
> <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />
> <wsdl:operation name="SampleRequest">
> <soap12:operation soapAction="urn:SampleRequest" style="document" />
> <wsdl:input>
> <soap12:body use="literal" />
> </wsdl:input>
> <wsdl:output>
> <soap12:body use="literal" />
> </wsdl:output>
> </wsdl:operation>
> </wsdl:binding>
> <wsdl:binding name="SampleServiceHttpBinding" type="ns:SampleServicePortType">
> <http:binding verb="POST" />
> <wsdl:operation name="SampleRequest">
> <http:operation location="SampleRequest" />
> <wsdl:input>
> <mime:content type="text/xml" part="parameters" />
> </wsdl:input>
> <wsdl:output>
> <mime:content type="text/xml" part="parameters" />
> </wsdl:output>
> </wsdl:operation>
> </wsdl:binding>
> <wsdl:service name="SampleService">
> <wsdl:port name="SampleServiceHttpSoap11Endpoint" binding="ns:SampleServiceSoap11Binding">
> <soap:address
> location="http://localhost:8080/SampleService/services/SampleService.SampleServiceHttpSoap11Endpoint/" />
> </wsdl:port>
> <wsdl:port name="SampleServiceHttpSoap12Endpoint" binding="ns:SampleServiceSoap12Binding">
> <soap12:address
> location="http://localhost:8080/SampleService/services/SampleService.SampleServiceHttpSoap12Endpoint/" />
> </wsdl:port>
> <wsdl:port name="SampleServiceHttpEndpoint" binding="ns:SampleServiceHttpBinding">
> <http:address
> location="http://localhost:8080/SampleService/services/SampleService.SampleServiceHttpEndpoint/" />
> </wsdl:port>
> </wsdl:service>
> </wsdl:definitions>
> Service class
> ============
> public SampleResponse sampleRequest(SampleRequest req) {
> try {
> SampleResponse response = new SampleResponse();
> SampleResponseType type = new SampleResponseType();
> FileInputStream fis = new FileInputStream("c:/tmp/"+req.getSampleRequest().getFileName());
> DataHandler dh = new DataHandler(new StreamDataSource(fis, req.getSampleRequest().getContentType()));
> type.setContent(dh);
> type.setFileName(req.getSampleRequest().getFileName());
> response.setSampleResponse(type);
> return response;
> } catch (Exception e) {
> e.printStackTrace();
> }
> return null;
> }
> client code is
> public static void main(String[] args) throws Exception{
>
> EndpointReference epr = new EndpointReference("http://localhost:8080/SampleService/services/SampleService.SampleServiceHttpSoap12Endpoint/");
> ServiceClient sc = new ServiceClient();
> sc.setTargetEPR(epr);
>
> SampleRequestType type = new SampleRequestType();
> type.setFileName("server.log");
> type.setContentType("text/plain");
> SampleRequest request = new SampleRequest();
> request.setSampleRequest(type);
> OMElement ele = sc.sendReceive(request.getOMElement(SampleRequest.MY_QNAME, OMAbstractFactory.getOMFactory()));
>
> Options options = new Options();
> options.setTo(epr);
> options.setAction("getDocumentRequest");
> options.setProperty(Constants.Configuration.ENABLE_MTOM, Constants.VALUE_TRUE);
> options.setProperty(Constants.Configuration.CACHE_ATTACHMENTS,Constants.VALUE_TRUE);
> options.setProperty(Constants.Configuration.ATTACHMENT_TEMP_DIR,"c:/tmmp");
> options.setProperty(Constants.Configuration.FILE_SIZE_THRESHOLD, "4000000000");
>
> sc.setOptions(options);
> OMElement element = sc.sendReceive(ele);
> }
> Error trace is
> Exception in thread "main" org.apache.axiom.om.OMException: java.io.IOException: Attempted read on closed stream.
> at org.apache.axiom.om.impl.MTOMXMLStreamWriter.flush(MTOMXMLStreamWriter.java:259)
> at org.apache.axiom.om.impl.llom.OMSerializableImpl.serializeAndConsume(OMSerializableImpl.java:190)
> at org.apache.axis2.transport.http.SOAPMessageFormatter.writeTo(SOAPMessageFormatter.java:74)
> at org.apache.axis2.transport.http.AxisRequestEntity.writeRequest(AxisRequestEntity.java:84)
> at org.apache.commons.httpclient.methods.EntityEnclosingMethod.writeRequestBody(EntityEnclosingMethod.java:499)
> at org.apache.commons.httpclient.HttpMethodBase.writeRequest(HttpMethodBase.java:2114)
> at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1096)
> at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398)
> at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
> at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
> at org.apache.axis2.transport.http.AbstractHTTPSender.executeMethod(AbstractHTTPSender.java:621)
> at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:193)
> at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:75)
> at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:404)
> at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:231)
> at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:443)
> at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:406)
> at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
> at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
> at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:555)
> at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:531)
> at com.sample.sampleservice.client.Client.main(Client.java:71)
> Caused by: java.io.IOException: Attempted read on closed stream.
> at org.apache.commons.httpclient.AutoCloseInputStream.isReadAllowed(AutoCloseInputStream.java:183)
> at org.apache.commons.httpclient.AutoCloseInputStream.read(AutoCloseInputStream.java:107)
> at java.io.FilterInputStream.read(FilterInputStream.java:111)
> at org.apache.axiom.om.util.DetachableInputStream.read(DetachableInputStream.java:147)
> at org.apache.james.mime4j.io.BufferedLineReaderInputStream.fillBuffer(BufferedLineReaderInputStream.java:111)
> at org.apache.james.mime4j.io.MimeBoundaryInputStream.fillBuffer(MimeBoundaryInputStream.java:223)
> at org.apache.james.mime4j.io.MimeBoundaryInputStream.read(MimeBoundaryInputStream.java:157)
> at org.apache.james.mime4j.io.BufferedLineReaderInputStream.fillBuffer(BufferedLineReaderInputStream.java:111)
> at org.apache.james.mime4j.io.BufferedLineReaderInputStream.read(BufferedLineReaderInputStream.java:158)
> at org.apache.james.mime4j.io.LineReaderInputStreamAdaptor.read(LineReaderInputStreamAdaptor.java:67)
> at java.io.FilterInputStream.read(FilterInputStream.java:111)
> at org.apache.axiom.om.util.DetachableInputStream.read(DetachableInputStream.java:147)
> at java.io.FilterInputStream.read(FilterInputStream.java:90)
> at org.apache.axiom.om.util.DetachableInputStream.read(DetachableInputStream.java:159)
> at org.apache.axiom.attachments.impl.BufferUtils.inputStream2OutputStream(BufferUtils.java:84)
> at org.apache.axiom.om.impl.MTOMXMLStreamWriter.flush(MTOMXMLStreamWriter.java:248)
> ... 21 more
> now changed the client code to the following
> SampleServiceStub stub = new SampleServiceStub();
> stub._getServiceClient().getOptions().setProperty(Constants.Configuration.ENABLE_MTOM, Constants.VALUE_TRUE);
> stub._getServiceClient().getOptions().setTimeOutInMilliSeconds(1000*60*10 );
> stub._getServiceClient().getOptions().setProperty(Constants.Configuration.CACHE_ATTACHMENTS, Constants.VALUE_TRUE);
> stub._getServiceClient().getOptions().setProperty(Constants.Configuration.ATTACHMENT_TEMP_DIR, "c:/tmp");
> stub._getServiceClient().getOptions().setProperty(Constants.Configuration.FILE_SIZE_THRESHOLD, "400000");
>
> SampleRequestType type = new SampleRequestType();
> type.setFileName("server.log");
> type.setContentType("text/plain");
>
> SampleRequest request = new SampleRequest();
> request.setSampleRequest(type);
>
> SampleResponse response = stub.sampleRequest(request);
> InputStream in = response.getSampleResponse().getContent().getInputStream();
> This time got the following
> org.apache.axiom.om.OMException: org.apache.axiom.ext.io.StreamCopyException: Error reading from source
> at org.apache.axiom.attachments.PartContentFactory.createPartContent(PartContentFactory.java:153)
> at org.apache.axiom.attachments.PartImpl.fetch(PartImpl.java:176)
> at org.apache.axiom.attachments.PartImpl.getContent(PartImpl.java:149)
> at org.apache.axiom.attachments.PartImpl.getInputStream(PartImpl.java:224)
> at org.apache.axiom.attachments.PartDataSource.getInputStream(PartDataSource.java:44)
> at javax.activation.DataHandler.getInputStream(DataHandler.java:237)
> at com.sample.sampleservice.client.Client.main(Client.java:109)
> Caused by: org.apache.axiom.ext.io.StreamCopyException: Error reading from source
> at org.apache.axiom.attachments.utils.BAAOutputStream.readFrom(BAAOutputStream.java:114)
> at org.apache.axiom.attachments.impl.BufferUtils.inputStream2OutputStream(BufferUtils.java:107)
> at org.apache.axiom.attachments.PartContentFactory.createPartContent(PartContentFactory.java:125)
> ... 6 more
> Caused by: java.io.IOException: Attempted read on closed stream.
> at org.apache.commons.httpclient.AutoCloseInputStream.isReadAllowed(AutoCloseInputStream.java:183)
> at org.apache.commons.httpclient.AutoCloseInputStream.read(AutoCloseInputStream.java:107)
> at java.io.FilterInputStream.read(FilterInputStream.java:111)
> at org.apache.axiom.om.util.DetachableInputStream.read(DetachableInputStream.java:147)
> at org.apache.james.mime4j.io.BufferedLineReaderInputStream.fillBuffer(BufferedLineReaderInputStream.java:111)
> at org.apache.james.mime4j.io.MimeBoundaryInputStream.fillBuffer(MimeBoundaryInputStream.java:223)
> at org.apache.james.mime4j.io.MimeBoundaryInputStream.read(MimeBoundaryInputStream.java:157)
> at org.apache.james.mime4j.io.BufferedLineReaderInputStream.fillBuffer(BufferedLineReaderInputStream.java:111)
> at org.apache.james.mime4j.io.BufferedLineReaderInputStream.read(BufferedLineReaderInputStream.java:158)
> at org.apache.james.mime4j.io.LineReaderInputStreamAdaptor.read(LineReaderInputStreamAdaptor.java:67)
> at org.apache.axiom.attachments.utils.BAAOutputStream.readFrom(BAAOutputStream.java:112)
> ... 8 more
--
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
[jira] [Updated] (AXIS2-5304) Attempted read on closed stream
Posted by "Sridhar Ratna (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/AXIS2-5304?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Sridhar Ratna updated AXIS2-5304:
---------------------------------
Attachment: SampleServiceClient.zip
SampleService.zip
eclipse service and client project
> Attempted read on closed stream
> -------------------------------
>
> Key: AXIS2-5304
> URL: https://issues.apache.org/jira/browse/AXIS2-5304
> Project: Axis2
> Issue Type: Bug
> Components: client-api
> Affects Versions: 1.6.1, 1.6.2
> Environment: Windows XP SP2, JDK 1.6, AXIS2-1.6.2, Jboss 4.0
> Reporter: Sridhar Ratna
> Priority: Blocker
> Labels: axiom_1.2.12, axiom_1.2.13, axis2_1.6.1, axis2_1.6.2, webservice_download_client
> Attachments: SampleService.zip, SampleServiceClient.zip
>
>
> When trying to download the large binary file getting the exception "org.apache.axiom.om.OMException: java.io.IOException: Attempted read on closed stream."
> Have the following properties in axis2.xml
> <parameter name="enableMTOM">true</parameter>
> <parameter name="enableSwA">false</parameter>
> WSDL is
> ========
> <?xml version="1.0" encoding="UTF-8"?>
> <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
> xmlns:ns1="http://org.apache.axis2/xsd" xmlns:ns="http://sample.com/sample/SampleService"
> xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
> xmlns:ax21="http://sample.com/sample/SampleService/xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema"
> xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
> xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" targetNamespace="http://sample.com/sample/SampleService">
> <wsdl:documentation>
> Please Type your service description here
> </wsdl:documentation>
> <wsdl:types>
> <xs:schema elementFormDefault="qualified" targetNamespace="http://sample.com/sample/SampleService">
>
> <xs:complexType name="SampleRequestType">
> <xs:sequence>
> <xs:element name="fileName" type="xs:string" minOccurs="1" maxOccurs="1"/>
> <xs:element name="contentType" type="xs:string" minOccurs="0" maxOccurs="1"/>
> </xs:sequence>
> </xs:complexType>
> <xs:complexType name="SampleResponseType">
> <xs:sequence>
> <xs:element name="fileName" type="xs:string" minOccurs="1" maxOccurs="1" />
> <xs:element name="content" type="xs:base64Binary" minOccurs="0" maxOccurs="1" />
> </xs:sequence>
> </xs:complexType>
>
> <xs:element name="SampleRequest" type="ns:SampleRequestType" />
> <xs:element name="SampleResponse" type="ns:SampleResponseType" />
> </xs:schema>
> </wsdl:types>
> <wsdl:message name="SampleRequest">
> <wsdl:part name="parameters" element="ns:SampleRequest" />
> </wsdl:message>
> <wsdl:message name="SampleResponse">
> <wsdl:part name="parameters" element="ns:SampleResponse" />
> </wsdl:message>
> <wsdl:portType name="SampleServicePortType">
> <wsdl:operation name="SampleRequest">
> <wsdl:input message="ns:SampleRequest" wsaw:Action="urn:SampleRequest" />
> <wsdl:output message="ns:SampleResponse" wsaw:Action="urn:SampleResponse" />
> </wsdl:operation>
> </wsdl:portType>
> <wsdl:binding name="SampleServiceSoap11Binding" type="ns:SampleServicePortType">
> <soap:binding transport="http://schemas.xmlsoap.org/soap/http"
> style="document" />
> <wsdl:operation name="SampleRequest">
> <soap:operation soapAction="urn:SampleRequest" style="document" />
> <wsdl:input>
> <soap:body use="literal" />
> </wsdl:input>
> <wsdl:output>
> <soap:body use="literal" />
> </wsdl:output>
> </wsdl:operation>
> </wsdl:binding>
> <wsdl:binding name="SampleServiceSoap12Binding" type="ns:SampleServicePortType">
> <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />
> <wsdl:operation name="SampleRequest">
> <soap12:operation soapAction="urn:SampleRequest" style="document" />
> <wsdl:input>
> <soap12:body use="literal" />
> </wsdl:input>
> <wsdl:output>
> <soap12:body use="literal" />
> </wsdl:output>
> </wsdl:operation>
> </wsdl:binding>
> <wsdl:binding name="SampleServiceHttpBinding" type="ns:SampleServicePortType">
> <http:binding verb="POST" />
> <wsdl:operation name="SampleRequest">
> <http:operation location="SampleRequest" />
> <wsdl:input>
> <mime:content type="text/xml" part="parameters" />
> </wsdl:input>
> <wsdl:output>
> <mime:content type="text/xml" part="parameters" />
> </wsdl:output>
> </wsdl:operation>
> </wsdl:binding>
> <wsdl:service name="SampleService">
> <wsdl:port name="SampleServiceHttpSoap11Endpoint" binding="ns:SampleServiceSoap11Binding">
> <soap:address
> location="http://localhost:8080/SampleService/services/SampleService.SampleServiceHttpSoap11Endpoint/" />
> </wsdl:port>
> <wsdl:port name="SampleServiceHttpSoap12Endpoint" binding="ns:SampleServiceSoap12Binding">
> <soap12:address
> location="http://localhost:8080/SampleService/services/SampleService.SampleServiceHttpSoap12Endpoint/" />
> </wsdl:port>
> <wsdl:port name="SampleServiceHttpEndpoint" binding="ns:SampleServiceHttpBinding">
> <http:address
> location="http://localhost:8080/SampleService/services/SampleService.SampleServiceHttpEndpoint/" />
> </wsdl:port>
> </wsdl:service>
> </wsdl:definitions>
> Service class
> ============
> public SampleResponse sampleRequest(SampleRequest req) {
> try {
> SampleResponse response = new SampleResponse();
> SampleResponseType type = new SampleResponseType();
> FileInputStream fis = new FileInputStream("c:/tmp/"+req.getSampleRequest().getFileName());
> DataHandler dh = new DataHandler(new StreamDataSource(fis, req.getSampleRequest().getContentType()));
> type.setContent(dh);
> type.setFileName(req.getSampleRequest().getFileName());
> response.setSampleResponse(type);
> return response;
> } catch (Exception e) {
> e.printStackTrace();
> }
> return null;
> }
> client code is
> public static void main(String[] args) throws Exception{
>
> EndpointReference epr = new EndpointReference("http://localhost:8080/SampleService/services/SampleService.SampleServiceHttpSoap12Endpoint/");
> ServiceClient sc = new ServiceClient();
> sc.setTargetEPR(epr);
>
> SampleRequestType type = new SampleRequestType();
> type.setFileName("server.log");
> type.setContentType("text/plain");
> SampleRequest request = new SampleRequest();
> request.setSampleRequest(type);
> OMElement ele = sc.sendReceive(request.getOMElement(SampleRequest.MY_QNAME, OMAbstractFactory.getOMFactory()));
>
> Options options = new Options();
> options.setTo(epr);
> options.setAction("getDocumentRequest");
> options.setProperty(Constants.Configuration.ENABLE_MTOM, Constants.VALUE_TRUE);
> options.setProperty(Constants.Configuration.CACHE_ATTACHMENTS,Constants.VALUE_TRUE);
> options.setProperty(Constants.Configuration.ATTACHMENT_TEMP_DIR,"c:/tmmp");
> options.setProperty(Constants.Configuration.FILE_SIZE_THRESHOLD, "4000000000");
>
> sc.setOptions(options);
> OMElement element = sc.sendReceive(ele);
> }
> Error trace is
> Exception in thread "main" org.apache.axiom.om.OMException: java.io.IOException: Attempted read on closed stream.
> at org.apache.axiom.om.impl.MTOMXMLStreamWriter.flush(MTOMXMLStreamWriter.java:259)
> at org.apache.axiom.om.impl.llom.OMSerializableImpl.serializeAndConsume(OMSerializableImpl.java:190)
> at org.apache.axis2.transport.http.SOAPMessageFormatter.writeTo(SOAPMessageFormatter.java:74)
> at org.apache.axis2.transport.http.AxisRequestEntity.writeRequest(AxisRequestEntity.java:84)
> at org.apache.commons.httpclient.methods.EntityEnclosingMethod.writeRequestBody(EntityEnclosingMethod.java:499)
> at org.apache.commons.httpclient.HttpMethodBase.writeRequest(HttpMethodBase.java:2114)
> at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1096)
> at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398)
> at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
> at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
> at org.apache.axis2.transport.http.AbstractHTTPSender.executeMethod(AbstractHTTPSender.java:621)
> at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:193)
> at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:75)
> at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:404)
> at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:231)
> at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:443)
> at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:406)
> at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
> at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
> at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:555)
> at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:531)
> at com.sample.sampleservice.client.Client.main(Client.java:71)
> Caused by: java.io.IOException: Attempted read on closed stream.
> at org.apache.commons.httpclient.AutoCloseInputStream.isReadAllowed(AutoCloseInputStream.java:183)
> at org.apache.commons.httpclient.AutoCloseInputStream.read(AutoCloseInputStream.java:107)
> at java.io.FilterInputStream.read(FilterInputStream.java:111)
> at org.apache.axiom.om.util.DetachableInputStream.read(DetachableInputStream.java:147)
> at org.apache.james.mime4j.io.BufferedLineReaderInputStream.fillBuffer(BufferedLineReaderInputStream.java:111)
> at org.apache.james.mime4j.io.MimeBoundaryInputStream.fillBuffer(MimeBoundaryInputStream.java:223)
> at org.apache.james.mime4j.io.MimeBoundaryInputStream.read(MimeBoundaryInputStream.java:157)
> at org.apache.james.mime4j.io.BufferedLineReaderInputStream.fillBuffer(BufferedLineReaderInputStream.java:111)
> at org.apache.james.mime4j.io.BufferedLineReaderInputStream.read(BufferedLineReaderInputStream.java:158)
> at org.apache.james.mime4j.io.LineReaderInputStreamAdaptor.read(LineReaderInputStreamAdaptor.java:67)
> at java.io.FilterInputStream.read(FilterInputStream.java:111)
> at org.apache.axiom.om.util.DetachableInputStream.read(DetachableInputStream.java:147)
> at java.io.FilterInputStream.read(FilterInputStream.java:90)
> at org.apache.axiom.om.util.DetachableInputStream.read(DetachableInputStream.java:159)
> at org.apache.axiom.attachments.impl.BufferUtils.inputStream2OutputStream(BufferUtils.java:84)
> at org.apache.axiom.om.impl.MTOMXMLStreamWriter.flush(MTOMXMLStreamWriter.java:248)
> ... 21 more
> now changed the client code to the following
> SampleServiceStub stub = new SampleServiceStub();
> stub._getServiceClient().getOptions().setProperty(Constants.Configuration.ENABLE_MTOM, Constants.VALUE_TRUE);
> stub._getServiceClient().getOptions().setTimeOutInMilliSeconds(1000*60*10 );
> stub._getServiceClient().getOptions().setProperty(Constants.Configuration.CACHE_ATTACHMENTS, Constants.VALUE_TRUE);
> stub._getServiceClient().getOptions().setProperty(Constants.Configuration.ATTACHMENT_TEMP_DIR, "c:/tmp");
> stub._getServiceClient().getOptions().setProperty(Constants.Configuration.FILE_SIZE_THRESHOLD, "400000");
>
> SampleRequestType type = new SampleRequestType();
> type.setFileName("server.log");
> type.setContentType("text/plain");
>
> SampleRequest request = new SampleRequest();
> request.setSampleRequest(type);
>
> SampleResponse response = stub.sampleRequest(request);
> InputStream in = response.getSampleResponse().getContent().getInputStream();
> This time got the following
> org.apache.axiom.om.OMException: org.apache.axiom.ext.io.StreamCopyException: Error reading from source
> at org.apache.axiom.attachments.PartContentFactory.createPartContent(PartContentFactory.java:153)
> at org.apache.axiom.attachments.PartImpl.fetch(PartImpl.java:176)
> at org.apache.axiom.attachments.PartImpl.getContent(PartImpl.java:149)
> at org.apache.axiom.attachments.PartImpl.getInputStream(PartImpl.java:224)
> at org.apache.axiom.attachments.PartDataSource.getInputStream(PartDataSource.java:44)
> at javax.activation.DataHandler.getInputStream(DataHandler.java:237)
> at com.sample.sampleservice.client.Client.main(Client.java:109)
> Caused by: org.apache.axiom.ext.io.StreamCopyException: Error reading from source
> at org.apache.axiom.attachments.utils.BAAOutputStream.readFrom(BAAOutputStream.java:114)
> at org.apache.axiom.attachments.impl.BufferUtils.inputStream2OutputStream(BufferUtils.java:107)
> at org.apache.axiom.attachments.PartContentFactory.createPartContent(PartContentFactory.java:125)
> ... 6 more
> Caused by: java.io.IOException: Attempted read on closed stream.
> at org.apache.commons.httpclient.AutoCloseInputStream.isReadAllowed(AutoCloseInputStream.java:183)
> at org.apache.commons.httpclient.AutoCloseInputStream.read(AutoCloseInputStream.java:107)
> at java.io.FilterInputStream.read(FilterInputStream.java:111)
> at org.apache.axiom.om.util.DetachableInputStream.read(DetachableInputStream.java:147)
> at org.apache.james.mime4j.io.BufferedLineReaderInputStream.fillBuffer(BufferedLineReaderInputStream.java:111)
> at org.apache.james.mime4j.io.MimeBoundaryInputStream.fillBuffer(MimeBoundaryInputStream.java:223)
> at org.apache.james.mime4j.io.MimeBoundaryInputStream.read(MimeBoundaryInputStream.java:157)
> at org.apache.james.mime4j.io.BufferedLineReaderInputStream.fillBuffer(BufferedLineReaderInputStream.java:111)
> at org.apache.james.mime4j.io.BufferedLineReaderInputStream.read(BufferedLineReaderInputStream.java:158)
> at org.apache.james.mime4j.io.LineReaderInputStreamAdaptor.read(LineReaderInputStreamAdaptor.java:67)
> at org.apache.axiom.attachments.utils.BAAOutputStream.readFrom(BAAOutputStream.java:112)
> ... 8 more
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
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
[jira] [Commented] (AXIS2-5304) Attempted read on closed stream
Posted by "Andreas Veithen (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/AXIS2-5304?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13427595#comment-13427595 ]
Andreas Veithen commented on AXIS2-5304:
----------------------------------------
@AndyB: There has been no progress on this issue because the reporter didn't provide the requested information. Maybe you can provide the missing information: does this really occur with Axis2 1.6.1 (as the reporter indicated in the report) or is this specific to Axis2 1.6.2?
> Attempted read on closed stream
> -------------------------------
>
> Key: AXIS2-5304
> URL: https://issues.apache.org/jira/browse/AXIS2-5304
> Project: Axis2
> Issue Type: Bug
> Components: client-api
> Affects Versions: 1.6.1, 1.6.2
> Environment: Windows XP SP2, JDK 1.6, AXIS2-1.6.2, Jboss 4.0
> Reporter: Sridhar Ratna
> Priority: Blocker
> Labels: axiom_1.2.12, axiom_1.2.13, axis2_1.6.1, axis2_1.6.2, webservice_download_client
> Attachments: SampleService.zip, SampleServiceClient.zip
>
>
> When trying to download the large binary file getting the exception "org.apache.axiom.om.OMException: java.io.IOException: Attempted read on closed stream."
> Have the following properties in axis2.xml
> <parameter name="enableMTOM">true</parameter>
> <parameter name="enableSwA">false</parameter>
> WSDL is
> ========
> <?xml version="1.0" encoding="UTF-8"?>
> <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
> xmlns:ns1="http://org.apache.axis2/xsd" xmlns:ns="http://sample.com/sample/SampleService"
> xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
> xmlns:ax21="http://sample.com/sample/SampleService/xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema"
> xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
> xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" targetNamespace="http://sample.com/sample/SampleService">
> <wsdl:documentation>
> Please Type your service description here
> </wsdl:documentation>
> <wsdl:types>
> <xs:schema elementFormDefault="qualified" targetNamespace="http://sample.com/sample/SampleService">
>
> <xs:complexType name="SampleRequestType">
> <xs:sequence>
> <xs:element name="fileName" type="xs:string" minOccurs="1" maxOccurs="1"/>
> <xs:element name="contentType" type="xs:string" minOccurs="0" maxOccurs="1"/>
> </xs:sequence>
> </xs:complexType>
> <xs:complexType name="SampleResponseType">
> <xs:sequence>
> <xs:element name="fileName" type="xs:string" minOccurs="1" maxOccurs="1" />
> <xs:element name="content" type="xs:base64Binary" minOccurs="0" maxOccurs="1" />
> </xs:sequence>
> </xs:complexType>
>
> <xs:element name="SampleRequest" type="ns:SampleRequestType" />
> <xs:element name="SampleResponse" type="ns:SampleResponseType" />
> </xs:schema>
> </wsdl:types>
> <wsdl:message name="SampleRequest">
> <wsdl:part name="parameters" element="ns:SampleRequest" />
> </wsdl:message>
> <wsdl:message name="SampleResponse">
> <wsdl:part name="parameters" element="ns:SampleResponse" />
> </wsdl:message>
> <wsdl:portType name="SampleServicePortType">
> <wsdl:operation name="SampleRequest">
> <wsdl:input message="ns:SampleRequest" wsaw:Action="urn:SampleRequest" />
> <wsdl:output message="ns:SampleResponse" wsaw:Action="urn:SampleResponse" />
> </wsdl:operation>
> </wsdl:portType>
> <wsdl:binding name="SampleServiceSoap11Binding" type="ns:SampleServicePortType">
> <soap:binding transport="http://schemas.xmlsoap.org/soap/http"
> style="document" />
> <wsdl:operation name="SampleRequest">
> <soap:operation soapAction="urn:SampleRequest" style="document" />
> <wsdl:input>
> <soap:body use="literal" />
> </wsdl:input>
> <wsdl:output>
> <soap:body use="literal" />
> </wsdl:output>
> </wsdl:operation>
> </wsdl:binding>
> <wsdl:binding name="SampleServiceSoap12Binding" type="ns:SampleServicePortType">
> <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />
> <wsdl:operation name="SampleRequest">
> <soap12:operation soapAction="urn:SampleRequest" style="document" />
> <wsdl:input>
> <soap12:body use="literal" />
> </wsdl:input>
> <wsdl:output>
> <soap12:body use="literal" />
> </wsdl:output>
> </wsdl:operation>
> </wsdl:binding>
> <wsdl:binding name="SampleServiceHttpBinding" type="ns:SampleServicePortType">
> <http:binding verb="POST" />
> <wsdl:operation name="SampleRequest">
> <http:operation location="SampleRequest" />
> <wsdl:input>
> <mime:content type="text/xml" part="parameters" />
> </wsdl:input>
> <wsdl:output>
> <mime:content type="text/xml" part="parameters" />
> </wsdl:output>
> </wsdl:operation>
> </wsdl:binding>
> <wsdl:service name="SampleService">
> <wsdl:port name="SampleServiceHttpSoap11Endpoint" binding="ns:SampleServiceSoap11Binding">
> <soap:address
> location="http://localhost:8080/SampleService/services/SampleService.SampleServiceHttpSoap11Endpoint/" />
> </wsdl:port>
> <wsdl:port name="SampleServiceHttpSoap12Endpoint" binding="ns:SampleServiceSoap12Binding">
> <soap12:address
> location="http://localhost:8080/SampleService/services/SampleService.SampleServiceHttpSoap12Endpoint/" />
> </wsdl:port>
> <wsdl:port name="SampleServiceHttpEndpoint" binding="ns:SampleServiceHttpBinding">
> <http:address
> location="http://localhost:8080/SampleService/services/SampleService.SampleServiceHttpEndpoint/" />
> </wsdl:port>
> </wsdl:service>
> </wsdl:definitions>
> Service class
> ============
> public SampleResponse sampleRequest(SampleRequest req) {
> try {
> SampleResponse response = new SampleResponse();
> SampleResponseType type = new SampleResponseType();
> FileInputStream fis = new FileInputStream("c:/tmp/"+req.getSampleRequest().getFileName());
> DataHandler dh = new DataHandler(new StreamDataSource(fis, req.getSampleRequest().getContentType()));
> type.setContent(dh);
> type.setFileName(req.getSampleRequest().getFileName());
> response.setSampleResponse(type);
> return response;
> } catch (Exception e) {
> e.printStackTrace();
> }
> return null;
> }
> client code is
> public static void main(String[] args) throws Exception{
>
> EndpointReference epr = new EndpointReference("http://localhost:8080/SampleService/services/SampleService.SampleServiceHttpSoap12Endpoint/");
> ServiceClient sc = new ServiceClient();
> sc.setTargetEPR(epr);
>
> SampleRequestType type = new SampleRequestType();
> type.setFileName("server.log");
> type.setContentType("text/plain");
> SampleRequest request = new SampleRequest();
> request.setSampleRequest(type);
> OMElement ele = sc.sendReceive(request.getOMElement(SampleRequest.MY_QNAME, OMAbstractFactory.getOMFactory()));
>
> Options options = new Options();
> options.setTo(epr);
> options.setAction("getDocumentRequest");
> options.setProperty(Constants.Configuration.ENABLE_MTOM, Constants.VALUE_TRUE);
> options.setProperty(Constants.Configuration.CACHE_ATTACHMENTS,Constants.VALUE_TRUE);
> options.setProperty(Constants.Configuration.ATTACHMENT_TEMP_DIR,"c:/tmmp");
> options.setProperty(Constants.Configuration.FILE_SIZE_THRESHOLD, "4000000000");
>
> sc.setOptions(options);
> OMElement element = sc.sendReceive(ele);
> }
> Error trace is
> Exception in thread "main" org.apache.axiom.om.OMException: java.io.IOException: Attempted read on closed stream.
> at org.apache.axiom.om.impl.MTOMXMLStreamWriter.flush(MTOMXMLStreamWriter.java:259)
> at org.apache.axiom.om.impl.llom.OMSerializableImpl.serializeAndConsume(OMSerializableImpl.java:190)
> at org.apache.axis2.transport.http.SOAPMessageFormatter.writeTo(SOAPMessageFormatter.java:74)
> at org.apache.axis2.transport.http.AxisRequestEntity.writeRequest(AxisRequestEntity.java:84)
> at org.apache.commons.httpclient.methods.EntityEnclosingMethod.writeRequestBody(EntityEnclosingMethod.java:499)
> at org.apache.commons.httpclient.HttpMethodBase.writeRequest(HttpMethodBase.java:2114)
> at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1096)
> at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398)
> at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
> at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
> at org.apache.axis2.transport.http.AbstractHTTPSender.executeMethod(AbstractHTTPSender.java:621)
> at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:193)
> at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:75)
> at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:404)
> at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:231)
> at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:443)
> at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:406)
> at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
> at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
> at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:555)
> at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:531)
> at com.sample.sampleservice.client.Client.main(Client.java:71)
> Caused by: java.io.IOException: Attempted read on closed stream.
> at org.apache.commons.httpclient.AutoCloseInputStream.isReadAllowed(AutoCloseInputStream.java:183)
> at org.apache.commons.httpclient.AutoCloseInputStream.read(AutoCloseInputStream.java:107)
> at java.io.FilterInputStream.read(FilterInputStream.java:111)
> at org.apache.axiom.om.util.DetachableInputStream.read(DetachableInputStream.java:147)
> at org.apache.james.mime4j.io.BufferedLineReaderInputStream.fillBuffer(BufferedLineReaderInputStream.java:111)
> at org.apache.james.mime4j.io.MimeBoundaryInputStream.fillBuffer(MimeBoundaryInputStream.java:223)
> at org.apache.james.mime4j.io.MimeBoundaryInputStream.read(MimeBoundaryInputStream.java:157)
> at org.apache.james.mime4j.io.BufferedLineReaderInputStream.fillBuffer(BufferedLineReaderInputStream.java:111)
> at org.apache.james.mime4j.io.BufferedLineReaderInputStream.read(BufferedLineReaderInputStream.java:158)
> at org.apache.james.mime4j.io.LineReaderInputStreamAdaptor.read(LineReaderInputStreamAdaptor.java:67)
> at java.io.FilterInputStream.read(FilterInputStream.java:111)
> at org.apache.axiom.om.util.DetachableInputStream.read(DetachableInputStream.java:147)
> at java.io.FilterInputStream.read(FilterInputStream.java:90)
> at org.apache.axiom.om.util.DetachableInputStream.read(DetachableInputStream.java:159)
> at org.apache.axiom.attachments.impl.BufferUtils.inputStream2OutputStream(BufferUtils.java:84)
> at org.apache.axiom.om.impl.MTOMXMLStreamWriter.flush(MTOMXMLStreamWriter.java:248)
> ... 21 more
> now changed the client code to the following
> SampleServiceStub stub = new SampleServiceStub();
> stub._getServiceClient().getOptions().setProperty(Constants.Configuration.ENABLE_MTOM, Constants.VALUE_TRUE);
> stub._getServiceClient().getOptions().setTimeOutInMilliSeconds(1000*60*10 );
> stub._getServiceClient().getOptions().setProperty(Constants.Configuration.CACHE_ATTACHMENTS, Constants.VALUE_TRUE);
> stub._getServiceClient().getOptions().setProperty(Constants.Configuration.ATTACHMENT_TEMP_DIR, "c:/tmp");
> stub._getServiceClient().getOptions().setProperty(Constants.Configuration.FILE_SIZE_THRESHOLD, "400000");
>
> SampleRequestType type = new SampleRequestType();
> type.setFileName("server.log");
> type.setContentType("text/plain");
>
> SampleRequest request = new SampleRequest();
> request.setSampleRequest(type);
>
> SampleResponse response = stub.sampleRequest(request);
> InputStream in = response.getSampleResponse().getContent().getInputStream();
> This time got the following
> org.apache.axiom.om.OMException: org.apache.axiom.ext.io.StreamCopyException: Error reading from source
> at org.apache.axiom.attachments.PartContentFactory.createPartContent(PartContentFactory.java:153)
> at org.apache.axiom.attachments.PartImpl.fetch(PartImpl.java:176)
> at org.apache.axiom.attachments.PartImpl.getContent(PartImpl.java:149)
> at org.apache.axiom.attachments.PartImpl.getInputStream(PartImpl.java:224)
> at org.apache.axiom.attachments.PartDataSource.getInputStream(PartDataSource.java:44)
> at javax.activation.DataHandler.getInputStream(DataHandler.java:237)
> at com.sample.sampleservice.client.Client.main(Client.java:109)
> Caused by: org.apache.axiom.ext.io.StreamCopyException: Error reading from source
> at org.apache.axiom.attachments.utils.BAAOutputStream.readFrom(BAAOutputStream.java:114)
> at org.apache.axiom.attachments.impl.BufferUtils.inputStream2OutputStream(BufferUtils.java:107)
> at org.apache.axiom.attachments.PartContentFactory.createPartContent(PartContentFactory.java:125)
> ... 6 more
> Caused by: java.io.IOException: Attempted read on closed stream.
> at org.apache.commons.httpclient.AutoCloseInputStream.isReadAllowed(AutoCloseInputStream.java:183)
> at org.apache.commons.httpclient.AutoCloseInputStream.read(AutoCloseInputStream.java:107)
> at java.io.FilterInputStream.read(FilterInputStream.java:111)
> at org.apache.axiom.om.util.DetachableInputStream.read(DetachableInputStream.java:147)
> at org.apache.james.mime4j.io.BufferedLineReaderInputStream.fillBuffer(BufferedLineReaderInputStream.java:111)
> at org.apache.james.mime4j.io.MimeBoundaryInputStream.fillBuffer(MimeBoundaryInputStream.java:223)
> at org.apache.james.mime4j.io.MimeBoundaryInputStream.read(MimeBoundaryInputStream.java:157)
> at org.apache.james.mime4j.io.BufferedLineReaderInputStream.fillBuffer(BufferedLineReaderInputStream.java:111)
> at org.apache.james.mime4j.io.BufferedLineReaderInputStream.read(BufferedLineReaderInputStream.java:158)
> at org.apache.james.mime4j.io.LineReaderInputStreamAdaptor.read(LineReaderInputStreamAdaptor.java:67)
> at org.apache.axiom.attachments.utils.BAAOutputStream.readFrom(BAAOutputStream.java:112)
> ... 8 more
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
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
[jira] [Commented] (AXIS2-5304) Attempted read on closed stream
Posted by "AndyB (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/AXIS2-5304?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13425581#comment-13425581 ]
AndyB commented on AXIS2-5304:
------------------------------
Is there any work around for this issue? Any suggestions? Thanx in advance!
> Attempted read on closed stream
> -------------------------------
>
> Key: AXIS2-5304
> URL: https://issues.apache.org/jira/browse/AXIS2-5304
> Project: Axis2
> Issue Type: Bug
> Components: client-api
> Affects Versions: 1.6.1, 1.6.2
> Environment: Windows XP SP2, JDK 1.6, AXIS2-1.6.2, Jboss 4.0
> Reporter: Sridhar Ratna
> Priority: Blocker
> Labels: axiom_1.2.12, axiom_1.2.13, axis2_1.6.1, axis2_1.6.2, webservice_download_client
> Attachments: SampleService.zip, SampleServiceClient.zip
>
>
> When trying to download the large binary file getting the exception "org.apache.axiom.om.OMException: java.io.IOException: Attempted read on closed stream."
> Have the following properties in axis2.xml
> <parameter name="enableMTOM">true</parameter>
> <parameter name="enableSwA">false</parameter>
> WSDL is
> ========
> <?xml version="1.0" encoding="UTF-8"?>
> <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
> xmlns:ns1="http://org.apache.axis2/xsd" xmlns:ns="http://sample.com/sample/SampleService"
> xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
> xmlns:ax21="http://sample.com/sample/SampleService/xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema"
> xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
> xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" targetNamespace="http://sample.com/sample/SampleService">
> <wsdl:documentation>
> Please Type your service description here
> </wsdl:documentation>
> <wsdl:types>
> <xs:schema elementFormDefault="qualified" targetNamespace="http://sample.com/sample/SampleService">
>
> <xs:complexType name="SampleRequestType">
> <xs:sequence>
> <xs:element name="fileName" type="xs:string" minOccurs="1" maxOccurs="1"/>
> <xs:element name="contentType" type="xs:string" minOccurs="0" maxOccurs="1"/>
> </xs:sequence>
> </xs:complexType>
> <xs:complexType name="SampleResponseType">
> <xs:sequence>
> <xs:element name="fileName" type="xs:string" minOccurs="1" maxOccurs="1" />
> <xs:element name="content" type="xs:base64Binary" minOccurs="0" maxOccurs="1" />
> </xs:sequence>
> </xs:complexType>
>
> <xs:element name="SampleRequest" type="ns:SampleRequestType" />
> <xs:element name="SampleResponse" type="ns:SampleResponseType" />
> </xs:schema>
> </wsdl:types>
> <wsdl:message name="SampleRequest">
> <wsdl:part name="parameters" element="ns:SampleRequest" />
> </wsdl:message>
> <wsdl:message name="SampleResponse">
> <wsdl:part name="parameters" element="ns:SampleResponse" />
> </wsdl:message>
> <wsdl:portType name="SampleServicePortType">
> <wsdl:operation name="SampleRequest">
> <wsdl:input message="ns:SampleRequest" wsaw:Action="urn:SampleRequest" />
> <wsdl:output message="ns:SampleResponse" wsaw:Action="urn:SampleResponse" />
> </wsdl:operation>
> </wsdl:portType>
> <wsdl:binding name="SampleServiceSoap11Binding" type="ns:SampleServicePortType">
> <soap:binding transport="http://schemas.xmlsoap.org/soap/http"
> style="document" />
> <wsdl:operation name="SampleRequest">
> <soap:operation soapAction="urn:SampleRequest" style="document" />
> <wsdl:input>
> <soap:body use="literal" />
> </wsdl:input>
> <wsdl:output>
> <soap:body use="literal" />
> </wsdl:output>
> </wsdl:operation>
> </wsdl:binding>
> <wsdl:binding name="SampleServiceSoap12Binding" type="ns:SampleServicePortType">
> <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />
> <wsdl:operation name="SampleRequest">
> <soap12:operation soapAction="urn:SampleRequest" style="document" />
> <wsdl:input>
> <soap12:body use="literal" />
> </wsdl:input>
> <wsdl:output>
> <soap12:body use="literal" />
> </wsdl:output>
> </wsdl:operation>
> </wsdl:binding>
> <wsdl:binding name="SampleServiceHttpBinding" type="ns:SampleServicePortType">
> <http:binding verb="POST" />
> <wsdl:operation name="SampleRequest">
> <http:operation location="SampleRequest" />
> <wsdl:input>
> <mime:content type="text/xml" part="parameters" />
> </wsdl:input>
> <wsdl:output>
> <mime:content type="text/xml" part="parameters" />
> </wsdl:output>
> </wsdl:operation>
> </wsdl:binding>
> <wsdl:service name="SampleService">
> <wsdl:port name="SampleServiceHttpSoap11Endpoint" binding="ns:SampleServiceSoap11Binding">
> <soap:address
> location="http://localhost:8080/SampleService/services/SampleService.SampleServiceHttpSoap11Endpoint/" />
> </wsdl:port>
> <wsdl:port name="SampleServiceHttpSoap12Endpoint" binding="ns:SampleServiceSoap12Binding">
> <soap12:address
> location="http://localhost:8080/SampleService/services/SampleService.SampleServiceHttpSoap12Endpoint/" />
> </wsdl:port>
> <wsdl:port name="SampleServiceHttpEndpoint" binding="ns:SampleServiceHttpBinding">
> <http:address
> location="http://localhost:8080/SampleService/services/SampleService.SampleServiceHttpEndpoint/" />
> </wsdl:port>
> </wsdl:service>
> </wsdl:definitions>
> Service class
> ============
> public SampleResponse sampleRequest(SampleRequest req) {
> try {
> SampleResponse response = new SampleResponse();
> SampleResponseType type = new SampleResponseType();
> FileInputStream fis = new FileInputStream("c:/tmp/"+req.getSampleRequest().getFileName());
> DataHandler dh = new DataHandler(new StreamDataSource(fis, req.getSampleRequest().getContentType()));
> type.setContent(dh);
> type.setFileName(req.getSampleRequest().getFileName());
> response.setSampleResponse(type);
> return response;
> } catch (Exception e) {
> e.printStackTrace();
> }
> return null;
> }
> client code is
> public static void main(String[] args) throws Exception{
>
> EndpointReference epr = new EndpointReference("http://localhost:8080/SampleService/services/SampleService.SampleServiceHttpSoap12Endpoint/");
> ServiceClient sc = new ServiceClient();
> sc.setTargetEPR(epr);
>
> SampleRequestType type = new SampleRequestType();
> type.setFileName("server.log");
> type.setContentType("text/plain");
> SampleRequest request = new SampleRequest();
> request.setSampleRequest(type);
> OMElement ele = sc.sendReceive(request.getOMElement(SampleRequest.MY_QNAME, OMAbstractFactory.getOMFactory()));
>
> Options options = new Options();
> options.setTo(epr);
> options.setAction("getDocumentRequest");
> options.setProperty(Constants.Configuration.ENABLE_MTOM, Constants.VALUE_TRUE);
> options.setProperty(Constants.Configuration.CACHE_ATTACHMENTS,Constants.VALUE_TRUE);
> options.setProperty(Constants.Configuration.ATTACHMENT_TEMP_DIR,"c:/tmmp");
> options.setProperty(Constants.Configuration.FILE_SIZE_THRESHOLD, "4000000000");
>
> sc.setOptions(options);
> OMElement element = sc.sendReceive(ele);
> }
> Error trace is
> Exception in thread "main" org.apache.axiom.om.OMException: java.io.IOException: Attempted read on closed stream.
> at org.apache.axiom.om.impl.MTOMXMLStreamWriter.flush(MTOMXMLStreamWriter.java:259)
> at org.apache.axiom.om.impl.llom.OMSerializableImpl.serializeAndConsume(OMSerializableImpl.java:190)
> at org.apache.axis2.transport.http.SOAPMessageFormatter.writeTo(SOAPMessageFormatter.java:74)
> at org.apache.axis2.transport.http.AxisRequestEntity.writeRequest(AxisRequestEntity.java:84)
> at org.apache.commons.httpclient.methods.EntityEnclosingMethod.writeRequestBody(EntityEnclosingMethod.java:499)
> at org.apache.commons.httpclient.HttpMethodBase.writeRequest(HttpMethodBase.java:2114)
> at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1096)
> at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398)
> at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
> at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
> at org.apache.axis2.transport.http.AbstractHTTPSender.executeMethod(AbstractHTTPSender.java:621)
> at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:193)
> at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:75)
> at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:404)
> at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:231)
> at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:443)
> at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:406)
> at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
> at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
> at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:555)
> at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:531)
> at com.sample.sampleservice.client.Client.main(Client.java:71)
> Caused by: java.io.IOException: Attempted read on closed stream.
> at org.apache.commons.httpclient.AutoCloseInputStream.isReadAllowed(AutoCloseInputStream.java:183)
> at org.apache.commons.httpclient.AutoCloseInputStream.read(AutoCloseInputStream.java:107)
> at java.io.FilterInputStream.read(FilterInputStream.java:111)
> at org.apache.axiom.om.util.DetachableInputStream.read(DetachableInputStream.java:147)
> at org.apache.james.mime4j.io.BufferedLineReaderInputStream.fillBuffer(BufferedLineReaderInputStream.java:111)
> at org.apache.james.mime4j.io.MimeBoundaryInputStream.fillBuffer(MimeBoundaryInputStream.java:223)
> at org.apache.james.mime4j.io.MimeBoundaryInputStream.read(MimeBoundaryInputStream.java:157)
> at org.apache.james.mime4j.io.BufferedLineReaderInputStream.fillBuffer(BufferedLineReaderInputStream.java:111)
> at org.apache.james.mime4j.io.BufferedLineReaderInputStream.read(BufferedLineReaderInputStream.java:158)
> at org.apache.james.mime4j.io.LineReaderInputStreamAdaptor.read(LineReaderInputStreamAdaptor.java:67)
> at java.io.FilterInputStream.read(FilterInputStream.java:111)
> at org.apache.axiom.om.util.DetachableInputStream.read(DetachableInputStream.java:147)
> at java.io.FilterInputStream.read(FilterInputStream.java:90)
> at org.apache.axiom.om.util.DetachableInputStream.read(DetachableInputStream.java:159)
> at org.apache.axiom.attachments.impl.BufferUtils.inputStream2OutputStream(BufferUtils.java:84)
> at org.apache.axiom.om.impl.MTOMXMLStreamWriter.flush(MTOMXMLStreamWriter.java:248)
> ... 21 more
> now changed the client code to the following
> SampleServiceStub stub = new SampleServiceStub();
> stub._getServiceClient().getOptions().setProperty(Constants.Configuration.ENABLE_MTOM, Constants.VALUE_TRUE);
> stub._getServiceClient().getOptions().setTimeOutInMilliSeconds(1000*60*10 );
> stub._getServiceClient().getOptions().setProperty(Constants.Configuration.CACHE_ATTACHMENTS, Constants.VALUE_TRUE);
> stub._getServiceClient().getOptions().setProperty(Constants.Configuration.ATTACHMENT_TEMP_DIR, "c:/tmp");
> stub._getServiceClient().getOptions().setProperty(Constants.Configuration.FILE_SIZE_THRESHOLD, "400000");
>
> SampleRequestType type = new SampleRequestType();
> type.setFileName("server.log");
> type.setContentType("text/plain");
>
> SampleRequest request = new SampleRequest();
> request.setSampleRequest(type);
>
> SampleResponse response = stub.sampleRequest(request);
> InputStream in = response.getSampleResponse().getContent().getInputStream();
> This time got the following
> org.apache.axiom.om.OMException: org.apache.axiom.ext.io.StreamCopyException: Error reading from source
> at org.apache.axiom.attachments.PartContentFactory.createPartContent(PartContentFactory.java:153)
> at org.apache.axiom.attachments.PartImpl.fetch(PartImpl.java:176)
> at org.apache.axiom.attachments.PartImpl.getContent(PartImpl.java:149)
> at org.apache.axiom.attachments.PartImpl.getInputStream(PartImpl.java:224)
> at org.apache.axiom.attachments.PartDataSource.getInputStream(PartDataSource.java:44)
> at javax.activation.DataHandler.getInputStream(DataHandler.java:237)
> at com.sample.sampleservice.client.Client.main(Client.java:109)
> Caused by: org.apache.axiom.ext.io.StreamCopyException: Error reading from source
> at org.apache.axiom.attachments.utils.BAAOutputStream.readFrom(BAAOutputStream.java:114)
> at org.apache.axiom.attachments.impl.BufferUtils.inputStream2OutputStream(BufferUtils.java:107)
> at org.apache.axiom.attachments.PartContentFactory.createPartContent(PartContentFactory.java:125)
> ... 6 more
> Caused by: java.io.IOException: Attempted read on closed stream.
> at org.apache.commons.httpclient.AutoCloseInputStream.isReadAllowed(AutoCloseInputStream.java:183)
> at org.apache.commons.httpclient.AutoCloseInputStream.read(AutoCloseInputStream.java:107)
> at java.io.FilterInputStream.read(FilterInputStream.java:111)
> at org.apache.axiom.om.util.DetachableInputStream.read(DetachableInputStream.java:147)
> at org.apache.james.mime4j.io.BufferedLineReaderInputStream.fillBuffer(BufferedLineReaderInputStream.java:111)
> at org.apache.james.mime4j.io.MimeBoundaryInputStream.fillBuffer(MimeBoundaryInputStream.java:223)
> at org.apache.james.mime4j.io.MimeBoundaryInputStream.read(MimeBoundaryInputStream.java:157)
> at org.apache.james.mime4j.io.BufferedLineReaderInputStream.fillBuffer(BufferedLineReaderInputStream.java:111)
> at org.apache.james.mime4j.io.BufferedLineReaderInputStream.read(BufferedLineReaderInputStream.java:158)
> at org.apache.james.mime4j.io.LineReaderInputStreamAdaptor.read(LineReaderInputStreamAdaptor.java:67)
> at org.apache.axiom.attachments.utils.BAAOutputStream.readFrom(BAAOutputStream.java:112)
> ... 8 more
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
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