Hi On 20/12/12 09:13, Malisetti, Ramanjaneyulu wrote:
Hi, We have the following code which used to work with CXF 2.5.2 but getting the below exception with CXF 2.7.1 Map<String, InputStream> attachments = files; List<Attachment> attachments = new ArrayList<Attachment>();/* First attachment is always the Response payload */ Attachment respXMLPayloadAttachment = new Attachment("Response_XML_Payload", "application/xml", responsePayload.getBytes()); attachments.add(respXMLPayloadAttachment); Set<String> attachmentFileNames = files.keySet(); for (String fileName : attachmentFileNames) { ContentDisposition cd = new ContentDisposition("attachment;filename=" + fileName); attachments.add(new Attachment(fileName, files.get(fileName), cd)); } return new MultipartBody(attachments); we are getting response but status code is 500 because of the below exception
Yes, reproduced, there appears to be some regression at the IOUtils level to do with copying input streams. Workaround: remove ".getBytes()" or wrap into StringReader.
We'll get this fixed Sergey
Response: ------------------------------ --uuid:32188b25-724d-400a-8ba4-a8c693874318 Content-Type: application/xml Content-Transfer-Encoding: binary Content-ID:<Response_XML_Payload> Error serializing the response, please check the server logs, response class : MultipartBody. --uuid:32188b25-724d-400a-8ba4-a8c693874318 Content-Type: application/xml Content-Transfer-Encoding: binary Content-ID:<console-output.txt> <ns1:XMLFault xmlns:ns1="http://cxf.apache.org/bindings/xformat"><ns1:faultstring xmlns:ns1="http://cxf.apache.org/bindings/xformat">java.lang.IllegalStateException: !empty</ns1:faultstring></ns1:XMLFault> ------------------------------- Exception on Server side: java.lang.IllegalStateException: !empty at org.eclipse.jetty.server.AbstractHttpConnection$Output.sendContent(AbstractHttpConnection.java:1053) at org.apache.cxf.transport.http_jetty.JettyHTTPDestination$JettyOutputStream.copyFrom(JettyHTTPDestination.java:405) at org.apache.cxf.helpers.IOUtils.copy(IOUtils.java:102) at org.apache.cxf.transport.http.AbstractHTTPDestination$WrappedOutputStream.copyFrom(AbstractHTTPDestination.java:698) at org.apache.cxf.helpers.IOUtils.copy(IOUtils.java:102) at org.apache.cxf.helpers.IOUtils.copyAndCloseInput(IOUtils.java:110) at org.apache.cxf.jaxrs.provider.BinaryDataProvider.copyInputToOutput(BinaryDataProvider.java:135) at org.apache.cxf.jaxrs.provider.BinaryDataProvider.writeTo(BinaryDataProvider.java:104) at org.apache.cxf.jaxrs.provider.MultipartProvider$MessageBodyWriterDataHandler.writeTo(MultipartProvider.java:456) at org.apache.cxf.jaxrs.provider.MultipartProvider.writeTo(MultipartProvider.java:265) at org.apache.cxf.jaxrs.utils.JAXRSUtils.writeMessageBody(JAXRSUtils.java:1216) at org.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor.serializeMessage(JAXRSOutInterceptor.java:259) at org.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor.processResponse(JAXRSOutInterceptor.java:155) at org.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor.handleMessage(JAXRSOutInterceptor.java:86) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:271) at org.apache.cxf.interceptor.OutgoingChainInterceptor.handleMessage(OutgoingChainInterceptor.java:77) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:271) at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121) at org.apache.cxf.transport.http_jetty.JettyHTTPDestination.serviceRequest(JettyHTTPDestination.java:354) at org.apache.cxf.transport.http_jetty.JettyHTTPDestination.doService(JettyHTTPDestination.java:318) at org.apache.cxf.transport.http_jetty.JettyHTTPHandler.handle(JettyHTTPHandler.java:72) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1067) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1003) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117) at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:250) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:111) at org.eclipse.jetty.server.Server.handle(Server.java:350) at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:454) at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:900) at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:954) at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:851) at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235) at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:77) at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:620) at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:46) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:603) at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:538) at java.lang.Thread.run(Thread.java:722) 2012-12-20 12:03:28,018 WARN [qtp12593459-146] interceptor.JAXRSOutInterceptor -101-org.apache.cxf.bundle-2.7.1 - Error serializing the response, please check the server logs, response class : MultipartBody.. Regards Raman
-- Sergey Beryozkin Talend Community Coders http://coders.talend.com/ Blog: http://sberyozkin.blogspot.com
