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

List:       rampart-dev
Subject:    [jira] [Assigned] (AXIS2-5998) Fix for "Read on closed stream" / "Failed to fetch MIME part content"
From:       "Robert Lazarski (Jira)" <jira () apache ! org>
Date:       2021-05-15 15:50:00
Message-ID: JIRA.13376807.1620226044000.458968.1621093800137 () Atlassian ! JIRA
[Download RAW message or body]


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

Robert Lazarski reassigned AXIS2-5998:
--------------------------------------

    Assignee: Robert Lazarski

> Fix for "Read on closed stream" / "Failed to fetch MIME part content" exception
> -------------------------------------------------------------------------------
> 
> Key: AXIS2-5998
> URL: https://issues.apache.org/jira/browse/AXIS2-5998
> Project: Axis2
> Issue Type: Bug
> Components: codegen
> Affects Versions: 1.7.6, 1.7.9
> Reporter: Gotthard Witsch
> Assignee: Robert Lazarski
> Priority: Major
> 
> Hello devs,
> after upgrading my webservice implementation on server and client from version \
> 1.6.0 to 1.7.9 there have been several issues. However I could solve all of them by \
> updating my Axis2 configuration. Except for one.
> Transfering binary data to the client always triggered an exception on the client:
> 
> {code:java}
> Failed to fetch the MIME part content
> org.apache.axiom.om.OMException: Failed to fetch the MIME part content
> at org.apache.axiom.attachments.PartImpl.fetch(PartImpl.java:201)
> at org.apache.axiom.attachments.PartImpl.getContent(PartImpl.java:152)
> at org.apache.axiom.attachments.PartImpl.getInputStream(PartImpl.java:248)
> at org.apache.axiom.attachments.PartDataSource.getInputStream(PartDataSource.java:44)
>  at javax.activation.DataHandler.getInputStream(DataHandler.java:238)
> at com.icoserve.ws.va26.dms.ExportTest.exportDicomImage(ExportTest.java:49)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>  at java.lang.reflect.Method.invoke(Method.java:498)
> at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
>  at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
>  at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
>  at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
>  at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
> at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
>  at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
>  at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
> at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
> at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
> at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
> at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
> at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
> at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.runTestClass(JUnitTestClassExecutor.java:110)
>  at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:58)
>  at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:38)
>  at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestClassProcessor.processTestClass(AbstractJUnitTestClassProcessor.java:62)
>  at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:51)
>  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>  at java.lang.reflect.Method.invoke(Method.java:498)
> at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
>  at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
>  at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
>  at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
>  at com.sun.proxy.$Proxy2.processTestClass(Unknown Source)
> at org.gradle.api.internal.tasks.testing.worker.TestWorker.processTestClass(TestWorker.java:119)
>  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>  at java.lang.reflect.Method.invoke(Method.java:498)
> at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
>  at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
>  at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:182)
>  at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:164)
>  at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:414)
>  at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
>  at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
>  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
> at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
>  at java.lang.Thread.run(Thread.java:748)
> Caused by: java.io.IOException: Attempted read on closed stream.
> at org.apache.http.conn.EofSensorInputStream.isReadAllowed(EofSensorInputStream.java:107)
>  at org.apache.http.conn.EofSensorInputStream.read(EofSensorInputStream.java:133)
> at java.io.FilterInputStream.read(FilterInputStream.java:133)
> 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.blob.MemoryBlobOutputStream.readFrom(MemoryBlobOutputStream.java:78)
>  at org.apache.axiom.blob.MemoryBlobImpl.readFrom(MemoryBlobImpl.java:64)
> at org.apache.axiom.attachments.PartImpl.fetch(PartImpl.java:198)
> ... 52 more
> {code}
> 
> After debugging a lot and reading the linked threads/issues, no solution mentioned \
> there worked. Thankfully a colleague had already found a *solution* for the \
> problem. The generated code did always close the stream before reading the linked \
> resource due to MTOM. His solution was to update the  
> */org/apache/axis2/wsdl/template/java/InterfaceImplementationTemplate.xsl* \
> codegeneration template by adding this line at the end of line 453: {code:java}
> // add at end of line 453
> // /org/apache/axis2/wsdl/template/java/InterfaceImplementationTemplate.xsl
> _returnEnv.buildWithAttachments();{code}
> Since I've changed the template from
> {code:java}
> // old 
> org.apache.axiom.soap.SOAPEnvelope _returnEnv = \
> _returnMessageContext.getEnvelope();{code} to  
> {code:java}
> // new
> org.apache.axiom.soap.SOAPEnvelope _returnEnv = \
> _returnMessageContext.getEnvelope(); _returnEnv.buildWithAttachments(); {code}
> and re-generated the stubs, everything is working fine.
> It would be really helpful for a lot of people to have the template be fixed for \
> the next release. The fix might also solve these issues:
> https://issues.apache.org/jira/browse/AXIS2-5487
> https://issues.apache.org/jira/browse/AXIS2-5967
> https://issues.apache.org/jira/browse/HTTPCLIENT-910
> 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
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