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 "Andreas Veithen (JIRA)" <ji...@apache.org> on 2012/08/02 22:47:04 UTC
[jira] [Commented] (AXIS2-5304) Attempted read on closed stream
[ 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