[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kandula-dev
Subject:    [jira] [Created] (AXIS2-5694) axis2 reading DataHandler in client ws causing: DataHandler.getorg.apa
From:       "Daniel Minder (JIRA)" <jira () apache ! org>
Date:       2015-04-09 19:04:14
Message-ID: JIRA.12819791.1428606223000.44313.1428606254235 () Atlassian ! JIRA
[Download RAW message or body]

Daniel Minder created AXIS2-5694:
------------------------------------

             Summary: axis2 reading DataHandler in client ws causing: \
DataHandler.getorg.apache.axiom.om.OMException: java.io.IOException: Attempted read \
on closed stream.  Key: AXIS2-5694
                 URL: https://issues.apache.org/jira/browse/AXIS2-5694
             Project: Axis2
          Issue Type: Bug
          Components: client-api, transports, wsdl
    Affects Versions: 1.6.2
         Environment: axis2
            Reporter: Daniel Minder


I use MTOM to send files back and forward. I use the DataHandler. On one side: 

                    File serverFile = new File(finalPath.toString());
                    DataSource serverDs = new FileDataSource(serverFile);;
                    dh = new DataHandler(serverDs);

                    return new.RetrFileResponse().setRetrFileResponse(dh);




... on the other side:

    		OutputStream os = new FileOutputStream(new File("C:/TEMP/" + finalFileName));
    		OMAbstractFactory.getOMFactory());
        	DataSource ds = rfr.getRetrFileResponse().getDataSource();
        	rfr.getRetrFileResponse().writeTo(os);
       		os.flush();
       		os.close();

It works perfectly well in the upload service (client to server). 
But the download version (server to client) makes the above mentioned exception (on \
the call '.getDataSource()').

Maybe it is related to jira issues: 
https://issues.apache.org/jira/browse/AXIS2-5487
https://issues.apache.org/jira/browse/AXIS2-5469
? If yes, where can I get Axis 1.7? Seems not to be downloadable yet?
If not, how can I keep the stream open? And anyway, the datas should be in the soap \
message! So I don't see why it can't retrieve the datas though the stream is closed \
on the server!

Can anybody help me please? I'd love to give further information!

Here is the whole exception stack:

ERROR [JHttp-38] 2015-04-09 20:39:24.317 ERROR
org.apache.axiom.om.OMException: java.io.IOException: Attempted read on closed \
stream.  at org.apache.axiom.attachments.PartContentFactory.createPartContent(PartContentFactory.java:153) \
~[axiom-api-1.2.13.jar:1.2.13]  at \
org.apache.axiom.attachments.PartImpl.fetch(PartImpl.java:176) \
~[axiom-api-1.2.13.jar:1.2.13]  at \
org.apache.axiom.attachments.PartImpl.getContent(PartImpl.java:149) \
~[axiom-api-1.2.13.jar:1.2.13]  at \
org.apache.axiom.attachments.PartImpl.getDataSource(PartImpl.java:234) \
~[axiom-api-1.2.13.jar:1.2.13]  at \
org.apache.axiom.attachments.PartDataHandler.getDataSource(PartDataHandler.java:50) \
~[axiom-api-1.2.13.jar:1.2.13]  at \
com.iflow.ws.server.octipus.WsOctiHello.testServiceRetrFile(WsOctiHello.java:571) \
~[octipus.jar:na]  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) \
~[na:1.7.0_75]  at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) \
~[na:1.7.0_75]  at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) \
~[na:1.7.0_75]  at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.7.0_75]
	at com.groiss.servlet.Dispatcher.service(Dispatcher.java:394) ~[ep.jar:9.0.18382]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) \
[javax.servlet-api.jar:3.1.0]  at \
org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:808) \
[jetty-servlet-9.2.9.v20150224.jar:9.2.9.v20150224]  at \
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669) \
[jetty-servlet-9.2.9.v20150224.jar:9.2.9.v20150224]  at \
com.planetj.servlet.filter.compression.CompressingFilter.doFilter(CompressingFilter.java:293) \
[pjl-comp-filter-1.8.1.jar:na]  at \
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) \
[jetty-servlet-9.2.9.v20150224.jar:9.2.9.v20150224]  at \
net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:198) \
[javamelody-1.53.0.jar:na]  at \
net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:176) \
[javamelody-1.53.0.jar:na]  at \
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) \
[jetty-servlet-9.2.9.v20150224.jar:9.2.9.v20150224]  at \
org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:224) \
[websocket-server-9.2.9.v20150224.jar:9.2.9.v20150224]  at \
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) \
[jetty-servlet-9.2.9.v20150224.jar:9.2.9.v20150224]  at \
org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585) \
[jetty-servlet-9.2.9.v20150224.jar:9.2.9.v20150224]  at \
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) \
[jetty-server-9.2.9.v20150224.jar:9.2.9.v20150224]  at \
org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577) \
[jetty-security-9.2.9.v20150224.jar:9.2.9.v20150224]  at \
org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223) \
[jetty-server-9.2.9.v20150224.jar:9.2.9.v20150224]  at \
org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127) \
[jetty-server-9.2.9.v20150224.jar:9.2.9.v20150224]  at \
org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515) \
[jetty-servlet-9.2.9.v20150224.jar:9.2.9.v20150224]  at \
org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) \
[jetty-server-9.2.9.v20150224.jar:9.2.9.v20150224]  at \
org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061) \
[jetty-server-9.2.9.v20150224.jar:9.2.9.v20150224]  at \
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) \
[jetty-server-9.2.9.v20150224.jar:9.2.9.v20150224]  at \
org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:52) \
[jetty-server-9.2.9.v20150224.jar:9.2.9.v20150224]  at \
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) \
[jetty-server-9.2.9.v20150224.jar:9.2.9.v20150224]  at \
org.eclipse.jetty.server.Server.handle(Server.java:497) \
[jetty-server-9.2.9.v20150224.jar:9.2.9.v20150224]  at \
org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310) \
[jetty-server-9.2.9.v20150224.jar:9.2.9.v20150224]  at \
org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257) \
[jetty-server-9.2.9.v20150224.jar:9.2.9.v20150224]  at \
org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540) \
[jetty-io-9.2.9.v20150224.jar:9.2.9.v20150224]  at \
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635) \
[jetty-util-9.2.9.v20150224.jar:9.2.9.v20150224]  at \
org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555) \
[jetty-util-9.2.9.v20150224.jar:9.2.9.v20150224]  at java.lang.Thread.run(Unknown \
Source) [na:1.7.0_75] Caused by: java.io.IOException: Attempted read on closed \
stream.  at org.apache.commons.httpclient.AutoCloseInputStream.isReadAllowed(AutoCloseInputStream.java:183) \
~[commons-httpclient-3.1.jar:na]  at \
org.apache.commons.httpclient.AutoCloseInputStream.read(AutoCloseInputStream.java:107) \
~[commons-httpclient-3.1.jar:na]  at java.io.FilterInputStream.read(Unknown Source) \
~[na:1.7.0_75]  at org.apache.axiom.om.util.DetachableInputStream.read(DetachableInputStream.java:147) \
~[axiom-api-1.2.13.jar:1.2.13]  at \
org.apache.james.mime4j.io.BufferedLineReaderInputStream.fillBuffer(BufferedLineReaderInputStream.java:111) \
~[apache-mime4j-core-0.7.2.jar:0.7.2]  at \
org.apache.james.mime4j.io.MimeBoundaryInputStream.fillBuffer(MimeBoundaryInputStream.java:223) \
~[apache-mime4j-core-0.7.2.jar:0.7.2]  at \
org.apache.james.mime4j.io.MimeBoundaryInputStream.read(MimeBoundaryInputStream.java:157) \
~[apache-mime4j-core-0.7.2.jar:0.7.2]  at \
org.apache.james.mime4j.io.BufferedLineReaderInputStream.fillBuffer(BufferedLineReaderInputStream.java:111) \
~[apache-mime4j-core-0.7.2.jar:0.7.2]  at \
org.apache.james.mime4j.io.BufferedLineReaderInputStream.read(BufferedLineReaderInputStream.java:158) \
~[apache-mime4j-core-0.7.2.jar:0.7.2]  at \
org.apache.james.mime4j.io.LineReaderInputStreamAdaptor.read(LineReaderInputStreamAdaptor.java:67) \
~[apache-mime4j-core-0.7.2.jar:0.7.2]  at java.io.FilterInputStream.read(Unknown \
Source) ~[na:1.7.0_75]  at \
org.apache.axiom.attachments.impl.BufferUtils.inputStream2FileOutputStream(BufferUtils.java:183) \
~[axiom-api-1.2.13.jar:1.2.13]  at \
org.apache.axiom.attachments.impl.BufferUtils.inputStream2OutputStream(BufferUtils.java:69) \
~[axiom-api-1.2.13.jar:1.2.13]  at \
org.apache.axiom.attachments.PartContentOnFile.<init>(PartContentOnFile.java:62) \
~[axiom-api-1.2.13.jar:1.2.13]  at \
org.apache.axiom.attachments.PartContentFactory.createPartContent(PartContentFactory.java:134) \
                ~[axiom-api-1.2.13.jar:1.2.13]
	... 38 common frames omitted


... and here is the wsdl; upladFile is working perfectly. retrFile is not!

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<wsdl:definitions
	xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
	xmlns:tns="http://.../"
	xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
	xmlns:xsd="http://www.w3.org/2001/XMLSchema"
	targetNamespace="http://.../">

  <wsdl:types>
    <xsd:schema targetNamespace="http://.../"
    xmlns:xmime="http://www.w3.org/2005/05/xmlmime">

      <xsd:element name="SayHelloRequest">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element name="firstname"  minOccurs="0" maxOccurs="1" \
                type="xsd:string"/>
            <xsd:element name="lastname"  minOccurs="0" maxOccurs="1" \
type="xsd:string"/>  </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="SayHelloResponse">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element name="responseMsg" type="xsd:string"/>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>

   	  <xsd:element name="MoveFileRequest">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element name="fileName"  minOccurs="0" maxOccurs="1" \
                type="xsd:string"/>
            <xsd:element name="filePath"  minOccurs="0" maxOccurs="1" \
type="xsd:string"/>  </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="MoveFileResponse">
        <xsd:complexType>
          <xsd:sequence>
			<xsd:element name="responseFile"  minOccurs="0" maxOccurs="1" \
type="xsd:base64Binary"/>  <xsd:element name="responseCode"  type="xsd:int"/>
			<xsd:element name="errorMsg" type="xsd:string"/>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>


   	  <xsd:element name="RetrFileRequest">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element name="fileName"  minOccurs="0" maxOccurs="1" \
                type="xsd:string"/>
            <xsd:element name="filePath"  minOccurs="0" maxOccurs="1" \
type="xsd:string"/>  </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="RetrFileResponse" type="xsd:base64Binary"/>

   	  <xsd:element name="UploadFileRequest">
        <xsd:complexType>
          <xsd:sequence>
          	<xsd:element name="payload"  minOccurs="0" maxOccurs="1" \
                type="xsd:base64Binary"/>
            <xsd:element name="fileName"  minOccurs="0" maxOccurs="1" \
type="xsd:string"/>  </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="UploadFileResponse">
        <xsd:complexType>
          <xsd:sequence>
			<xsd:element name="responseCode"  type="xsd:int"/>
			<xsd:element name="errorMsg" type="xsd:string"/>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>

    </xsd:schema>
  </wsdl:types>




  <wsdl:message name="SayHelloInput">
    <wsdl:part element="tns:SayHelloRequest" name="parameters"/>
  </wsdl:message>
  <wsdl:message name="SayHelloOutput">
    <wsdl:part element="tns:SayHelloResponse" name="parameters"/>
  </wsdl:message>

  <wsdl:message name="MoveFileInput">
    <wsdl:part element="tns:MoveFileRequest" name="parameters"/>
  </wsdl:message>
  <wsdl:message name="MoveFileOutput">
    <wsdl:part element="tns:MoveFileResponse" name="parameters"/>
  </wsdl:message>

  <wsdl:message name="RetrFileInput">
    <wsdl:part element="tns:RetrFileRequest" name="parameters"/>
  </wsdl:message>
  <wsdl:message name="RetrFileOutput">
    <wsdl:part element="tns:RetrFileResponse" name="parameters"/>
  </wsdl:message>

    <wsdl:message name="UploadFileInput">
    <wsdl:part element="tns:UploadFileRequest" name="parameters"/>
  </wsdl:message>
  <wsdl:message name="UploadFileOutput">
    <wsdl:part element="tns:UploadFileResponse" name="parameters"/>
  </wsdl:message>

  <wsdl:portType name="OctiHelloPort">
    <wsdl:operation name="sayHello">
      <wsdl:input message="tns:SayHelloInput"/>
      <wsdl:output message="tns:SayHelloOutput"/>
    </wsdl:operation>
    <wsdl:operation name="moveFile">
    	<wsdl:input message="tns:MoveFileInput"/>
    	<wsdl:output message="tns:MoveFileOutput"/>
    </wsdl:operation>

    <wsdl:operation name="retrFile">
    	<wsdl:input message="tns:RetrFileInput"/>
    	<wsdl:output message="tns:RetrFileOutput"/>
    </wsdl:operation>

    <wsdl:operation name="uploadFile">
    	<wsdl:input message="tns:UploadFileInput"/>
    	<wsdl:output message="tns:UploadFileOutput"/>
    </wsdl:operation>
  </wsdl:portType>

  <wsdl:binding name="OctiHelloSOAPBinding" type="tns:OctiHelloPort">
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

    <wsdl:operation name="sayHello">
      <soap:operation soapAction="http://.../sayHello"/>
      <wsdl:input>
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>

    <wsdl:operation name="moveFile">
      <soap:operation soapAction="http://.../moveFile"/>
      <wsdl:input>
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>

    <wsdl:operation name="uploadFile">
      <soap:operation soapAction="http://.../uploadFile"/>
      <wsdl:input>
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>

    <wsdl:operation name="retrFile">
      <soap:operation soapAction="http://.../retrFile"/>
      <wsdl:input>
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>




  </wsdl:binding>

  <wsdl:service name="OctiHelloService">
      <wsdl:port binding="tns:OctiHelloSOAPBinding" name="OctiHelloSOAP">
      <soap:address location="http://localhost:8180/wf/services.axis2/OctiHelloService"/>
  </wsdl:port>
  </wsdl:service>
</wsdl:definitions>






--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

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


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic