[ https://issues.apache.org/jira/browse/CXF-1524?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12587934#action_12587934 ]
Alex F commented on CXF-1524: ----------------------------- that is a real show stopper for us. hope someone can help. thanks in advance. -alex > SOAP with Attachments (BMMimeMultipart): DispatchInDatabindingInterceptor 's > call to soapMessage.countAttachments() throws IOException > ---------------------------------------------------------------------------------------------------------------------------------------- > > Key: CXF-1524 > URL: https://issues.apache.org/jira/browse/CXF-1524 > Project: CXF > Issue Type: Bug > Components: Soap Binding > Affects Versions: 2.0.4, 2.0.5 > Environment: CXF used to call a WebService (client-mode): WS called > uses SOAP with Attachments document/literal wrapped style. client uses > dispatch method and Service.Mode.MESSAGE. saaj-api 1.3 and saaj-impl 1.3 , > jaxb-api 2.1 all endorsed. called from a junit test case. > Reporter: Alex F > Priority: Critical > > The following call throws a IOException: > SOAPMessage soapResponseMsg = disp.invoke(soapRequestMsg); > The response is a SOAP Message with 2 Attachments. One small xml and one > rather big pdf (250kb). When the DispatchInDatabindingInterceptor calls > oapMessage.countAttachments() the underlying BMMimeMultipart class throws an > IOExcpetion. > One important thing to mention is that the same code works perfectly when > only one xml attachment is returned by the called webservice. Another > interesting thing is that in the logging below it states that the message was > saved to an tmp file. but when i look at that place there is none. Could that > be the reason for the IO -Handle - exception? > Logs: > 11.04.2008 09:20:10 org.apache.cxf.interceptor.LoggingInInterceptor logging > INFO: Inbound Message > ---------------------------- > Encoding: UTF-8 > Headers: {content-type=[multipart/related; type="text/xml"; > start="<3EB558C5A498923F1340808112DC20DF>"; > boundary="----=_Part_361_17089125.1207898405321"], connection=[Keep-Alive], > transfer-encoding=[chunked], Date=[Fri, 11 Apr 2008 07:20:05 GMT], > Keep-Alive=[timeout=15, max=100], Server=[Apache]} > Messages: > Message (saved to tmp file): > Filename: C:\DOKUME~1\XXXXXX\LOKALE~1\Temp\cxf-tmp-105260\cos27407tmp > (message truncated to 102400 bytes) > Payload: > ------=_Part_361_17089125.1207898405321 > Content-Type: text/xml; charset=UTF-8 > Content-Transfer-Encoding: binary > Content-Id: <3EB558C5A498923F1340808112DC20DF> > call throws the following Stacktrace: > 11.04.2008 09:20:36 org.apache.cxf.phase.PhaseInterceptorChain doIntercept > INFO: Interceptor has thrown exception, unwinding now > java.lang.RuntimeException: > com.sun.xml.messaging.saaj.packaging.mime.MessagingException: IO Error; > nested exception is: > java.io.IOException: Das Handle ist ungültig > at > com.sun.xml.messaging.saaj.soap.MessageImpl.countAttachments(MessageImpl.java:734) > at > org.apache.cxf.jaxws.interceptors.DispatchInDatabindingInterceptor$PostDispatchSOAPHandlerInterceptor.handleMessage(DispatchInDatabindingInterceptor.java:221) > at > org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:220) > at org.apache.cxf.jaxws.DispatchImpl.onMessage(DispatchImpl.java:330) > at > org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1976) > at > org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1812) > at > org.apache.cxf.io.CacheAndWriteOutputStream.postClose(CacheAndWriteOutputStream.java:47) > at > org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:159) > at > org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66) > at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:582) > at > org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62) > at > org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:220) > at org.apache.cxf.jaxws.DispatchImpl.invoke(DispatchImpl.java:179) > at org.apache.cxf.jaxws.DispatchImpl.invoke(DispatchImpl.java:124) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:597) > at junit.framework.TestCase.runTest(TestCase.java:164) > at junit.framework.TestCase.runBare(TestCase.java:130) > at > org.springframework.test.ConditionalTestCase.runBare(ConditionalTestCase.java:76) > at > org.springframework.test.annotation.AbstractAnnotationAwareTransactionalTests.access$001(AbstractAnnotationAwareTransactionalTests.java:70) > at > org.springframework.test.annotation.AbstractAnnotationAwareTransactionalTests$1.run(AbstractAnnotationAwareTransactionalTests.java:186) > at > org.springframework.test.annotation.AbstractAnnotationAwareTransactionalTests.runTest(AbstractAnnotationAwareTransactionalTests.java:313) > at > org.springframework.test.annotation.AbstractAnnotationAwareTransactionalTests.runTestTimed(AbstractAnnotationAwareTransactionalTests.java:281) > at > org.springframework.test.annotation.AbstractAnnotationAwareTransactionalTests.runBare(AbstractAnnotationAwareTransactionalTests.java:182) > at > org.springframework.test.jpa.AbstractJpaTests.runBare(AbstractJpaTests.java:174) > at > org.springframework.test.jpa.AbstractJpaTests.runBare(AbstractJpaTests.java:255) > at junit.framework.TestResult$1.protect(TestResult.java:110) > at junit.framework.TestResult.runProtected(TestResult.java:128) > at junit.framework.TestResult.run(TestResult.java:113) > at junit.framework.TestCase.run(TestCase.java:120) > at junit.framework.TestSuite.runTest(TestSuite.java:228) > at junit.framework.TestSuite.run(TestSuite.java:223) > at > org.junit.internal.runners.OldTestClassRunner.run(OldTestClassRunner.java:35) > at > org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38) > at > org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) > at > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460) > at > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673) > at > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386) > at > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196) > Caused by: com.sun.xml.messaging.saaj.packaging.mime.MessagingException: IO > Error; > nested exception is: > java.io.IOException: Das Handle ist ungültig > at > com.sun.xml.messaging.saaj.packaging.mime.internet.BMMimeMultipart.parse(BMMimeMultipart.java:214) > at > com.sun.xml.messaging.saaj.packaging.mime.internet.MimeMultipart.getCount(MimeMultipart.java:186) > at > com.sun.xml.messaging.saaj.soap.MessageImpl.initializeAllAttachments(MessageImpl.java:1257) > at > com.sun.xml.messaging.saaj.soap.MessageImpl.countAttachments(MessageImpl.java:732) > ... 43 more -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.