axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Espen Rydningen (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (AXIS2-5487) Attempted read on closed stream - II
Date Tue, 12 Feb 2013 21:37:12 GMT

     [ https://issues.apache.org/jira/browse/AXIS2-5487?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Espen Rydningen updated AXIS2-5487:
-----------------------------------

    Description: 
When trying to access a webservice we are getting the exception "org.apache.axiom.om.OMException:
java.io.IOException: Attempted read on closed stream."

Not default settings for Axis.

WSDL is attached
Debug log and stacktrace is attached

  was:

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


    
> Attempted read on closed stream - II
> ------------------------------------
>
>                 Key: AXIS2-5487
>                 URL: https://issues.apache.org/jira/browse/AXIS2-5487
>             Project: Axis2
>          Issue Type: Bug
>          Components: client-api
>    Affects Versions: 1.6.2
>         Environment: Windows XP SP2, JDK 1.7, AXIS2-1.6.2, Jetty 7.2.0
>            Reporter: Espen Rydningen
>            Priority: Blocker
>              Labels: apache-mime4j-core-0.7.2, axiom_1.2.13, axis2_1.6.2
>
> When trying to access a webservice we are getting the exception "org.apache.axiom.om.OMException:
java.io.IOException: Attempted read on closed stream."
> Not default settings for Axis.
> WSDL is attached
> Debug log and stacktrace is attached

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@axis.apache.org
For additional commands, e-mail: java-dev-help@axis.apache.org


Mime
View raw message