I’m not sure if anyone has ever tried MTOM with the Local transport. In theory, it should work. Not sure why it isn’t. If you could create a small test case that shows the error, that would be interesting to look at.
Dan On Jun 25, 2014, at 8:33 AM, Shriram <shri1984...@gmail.com> wrote: > I am downloading a file by clicking a link. I am using jdk1.7, cxf-2.7.5 and > enabled MTOM in both client and server. For UI i am using struts1.2. I got > the below exception > > [default-workqueue-8] ERROR consoleErrorLog - Exception in thread > "default-workqueue-8" > [default-workqueue-8] ERROR consoleErrorLog - java.lang.OutOfMemoryError: > Java heap space > [default-workqueue-8] ERROR consoleErrorLog - > > [default-workqueue-6] WARN org.apache.cxf.phase.PhaseInterceptorChain - > Interceptor for > {http://com.java.test.task/}TestService#{http://api.services.test.task/ > }getTestFile has thrown exception, unwinding now > org.apache.cxf.interceptor.Fault: Marshalling Error: Pipe closed > at > org.apache.cxf.jaxb.JAXBEncoderDecoder.marshall(JAXBEncoderDecoder.java:258) > at org.apache.cxf.jaxb.io.DataWriterImpl.write(DataWriterImpl.java:169) > at > org.apache.cxf.interceptor.AbstractOutDatabindingInterceptor.writeParts(AbstractOutDatabindingInterceptor.java:114) > at > org.apache.cxf.interceptor.BareOutInterceptor.handleMessage(BareOutInterceptor.java:68) > 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.local.LocalConduit$1$1.run(LocalConduit.java:143) > at > org.apache.cxf.workqueue.AutomaticWorkQueueImpl$3.run(AutomaticWorkQueueImpl.java:428) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) > at > org.apache.cxf.workqueue.AutomaticWorkQueueImpl$AWQThreadFactory$1.run(AutomaticWorkQueueImpl.java:353) > at java.lang.Thread.run(Thread.java:722) > Caused by: javax.xml.bind.MarshalException > - with linked exception: > [java.io.IOException: Pipe closed] > at > com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:328) > at > com.sun.xml.bind.v2.runtime.MarshallerImpl.marshal(MarshallerImpl.java:251) > at > javax.xml.bind.helpers.AbstractMarshallerImpl.marshal(AbstractMarshallerImpl.java:95) > at > org.apache.cxf.jaxb.JAXBEncoderDecoder.writeObject(JAXBEncoderDecoder.java:539) > at > org.apache.cxf.jaxb.JAXBEncoderDecoder.marshall(JAXBEncoderDecoder.java:233) > ... 13 more > Caused by: java.io.IOException: Pipe closed > at > java.io.PipedInputStream.checkStateForReceive(PipedInputStream.java:261) > at java.io.PipedInputStream.receive(PipedInputStream.java:227) > at java.io.PipedOutputStream.write(PipedOutputStream.java:149) > at > org.apache.cxf.io.AbstractWrappedOutputStream.write(AbstractWrappedOutputStream.java:51) > at > com.sun.xml.bind.v2.runtime.output.UTF8XmlOutput.flushBuffer(UTF8XmlOutput.java:418) > at > com.sun.xml.bind.v2.runtime.output.UTF8XmlOutput.text(UTF8XmlOutput.java:371) > at > com.sun.xml.bind.v2.runtime.unmarshaller.Base64Data.writeTo(Base64Data.java:313) > at > com.sun.xml.bind.v2.runtime.output.UTF8XmlOutput.text(UTF8XmlOutput.java:312) > at > com.sun.xml.bind.v2.runtime.XMLSerializer.leafElement(XMLSerializer.java:356) > at > com.sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl$PcdataImpl.writeLeafElement(RuntimeBuiltinLeafInfoImpl.java:183) > at > com.sun.xml.bind.v2.runtime.reflect.TransducedAccessor$CompositeTransducedAccessorImpl.writeLeafElement(TransducedAccessor.java:256) > at > com.sun.xml.bind.v2.runtime.property.SingleElementLeafProperty.serializeBody(SingleElementLeafProperty.java:130) > at > com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:361) > at > com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:696) > at > com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl$1.serializeBody(ElementBeanInfoImpl.java:156) > at > com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl$1.serializeBody(ElementBeanInfoImpl.java:131) > at > com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeBody(ElementBeanInfoImpl.java:333) > at > com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeRoot(ElementBeanInfoImpl.java:340) > at > com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeRoot(ElementBeanInfoImpl.java:76) > at > com.sun.xml.bind.v2.runtime.XMLSerializer.childAsRoot(XMLSerializer.java:494) > at > com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:323) > ... 17 more > > Serverside code: > > DataHandler theDataHandler = new DataHandler(new FileDataSource(new > File("filename""); > aResponse.setHeader("Pragma", "dummy"); > aResponse.setHeader("Cache-Control", "private"); > String contentType = "text/plain"; > aResponse.setContentType(contentType); > aResponse.setHeader("Content-Disposition", > "attachment; filename=\"" + name + ".txt\""); > > if (theDataHandler != null) > { > downloadFile(inputStream from datahandler, response > OutputStream()); > } > > Using Datahandler to handle the download. i am getting null only for larger > files. The exception occurs only for large files. I have commented out > LoggingINInterceptor and LoggingOutInterceptor. > > Note: I am using localtransport for publishing service. Please tell me MTOM > feature is applicable to localtransport or not? If it is applicable why the > code is not working ? > > > > > -- > View this message in context: > http://cxf.547215.n5.nabble.com/RE-Outofmemory-error-in-datahandler-tp5745554.html > Sent from the cxf-user mailing list archive at Nabble.com. -- Daniel Kulp dk...@apache.org - http://dankulp.com/blog Talend Community Coder - http://coders.talend.com