Do you also have schema-validation turned on? It kind of seems like yes. That MAY be a problem. When JAXB validates, it sucks the entire MTOM thing into a byte[] to send to the validator. That's a JAXB thing that we cannot really do anything about. :-(
Dan On Tuesday 15 June 2010 9:15:30 am baeschtu baeschtu wrote: > Hello List > I have a webservice with ws-security and would like to up/download files. > (I followed this howto > http://www.jroller.com/gmazza/entry/cxf_x509_profile) I also added the > <property name="allowMTOM" value="true"/> for the WSS4JOutInterceptor. It > works for 40MB files but when trying to upload a 120MB file I got the > following exception. > > 14:35:52,010 INFO SecurityTokenReference:562 - X509IssuerSerial alias: > myservicekey > 14:35:52,195 INFO SecurityTokenReference:562 - X509IssuerSerial alias: > myclientkey > 2010-06-15 14:36:00 WARNING Interceptor has thrown exception, unwinding now > > java.lang.OutOfMemoryError: Java heap space > 0 > com.sun.xml.bind.v2.util.ByteArrayOutputStreamEx.readFrom(ByteArrayOutputSt > reamEx.java:71) 1 > com.sun.xml.bind.v2.runtime.unmarshaller.Base64Data.get(Base64Data.java:189 > ) 2 > com.sun.xml.bind.v2.runtime.unmarshaller.Base64Data.length(Base64Data.java: > 218) 3 > com.sun.xml.bind.v2.runtime.unmarshaller.ValidatingUnmarshaller.text(Valida > tingUnmarshaller.java:109) 4 > com.sun.xml.bind.v2.runtime.unmarshaller.MTOMDecorator.startElement(MTOMDec > orator.java:103) 5 > com.sun.xml.bind.v2.runtime.unmarshaller.InterningXmlVisitor.startElement(I > nterningXmlVisitor.java:71) 6 > com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.handleStartEle > ment(StAXStreamConnector.java:242) 7 > com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.bridge(StAXStr > eamConnector.java:176) 8 > com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(Unmars > hallerImpl.java:360) 9 > com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(Unmarsh > allerImpl.java:339) 10 > org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:6 > 46) 11 > org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:5 > 33) 12 org.apache.cxf.jaxb.io.DataReaderImpl.read(DataReaderImpl.java:128) > 13 > org.apache.cxf.interceptor.DocLiteralInInterceptor.handleMessage(DocLiteral > InInterceptor.java:188) 14 > org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChai > n.java:236) 15 > org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationO > bserver.java:104) 16 > org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestinati > on.java:98) 17 > org.apache.cxf.transport.servlet.ServletController.invokeDestination(Servle > tController.java:392) 18 > org.apache.cxf.transport.servlet.ServletController.invoke(ServletController > .java:170) 19 > org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServl > et.java:142) 20 > org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPSer > vlet.java:45) 21 > javax.servlet.http.HttpServlet.service(HttpServlet.java:637) 22 > org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPSe > rvlet.java:101) 23 > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applicatio > nFilterChain.java:290) 24 > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterC > hain.java:206) 25 > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.j > ava:233) 26 > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.j > ava:191) 27 > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:12 > 8) 28 > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:10 > 2) 29 > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.jav > a:109) 30 > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) > 31 org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190) > > org.apache.cxf.interceptor.Fault: Unmarshalling Error: Java heap space > 0 > org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:6 > 68) 1 > org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:5 > 33) 2 org.apache.cxf.jaxb.io.DataReaderImpl.read(DataReaderImpl.java:128) 3 > org.apache.cxf.interceptor.DocLiteralInInterceptor.handleMessage(DocLiteral > InInterceptor.java:188) 4 > org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChai > n.java:236) 5 > org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationO > bserver.java:104) 6 > org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestinati > on.java:98) 7 > org.apache.cxf.transport.servlet.ServletController.invokeDestination(Servle > tController.java:392) 8 > org.apache.cxf.transport.servlet.ServletController.invoke(ServletController > .java:170) 9 > org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServl > et.java:142) 10 > org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPSer > vlet.java:45) 11 > javax.servlet.http.HttpServlet.service(HttpServlet.java:637) 12 > org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPSe > rvlet.java:101) 13 > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applicatio > nFilterChain.java:290) 14 > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterC > hain.java:206) 15 > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.j > ava:233) 16 > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.j > ava:191) 17 > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:12 > 8) 18 > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:10 > 2) 19 > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.jav > a:109) 20 > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) > 21 org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190) > 22 org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291) > 23 org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:769) > 24 > org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:698 > ) 25 > org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.jav > a:891) 26 > org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.ja > va:690) 27 java.lang.Thread.run(Thread.java:619) > > > - Bastian > > > > > > 2010/4/30 Steve T/V <[email protected]> > > > Thanks to Dan, we got attachments working and the initial result, at > > least, shows no OutOfMemory exceptions! > > > > The solution was a little different than he described in the code > > excerpt, since it was the WSS4JOutInterceptor (not the "In" interceptor) > > and we had the client configuration in Java, but it was enough to point > > us in the right > > direction. Here's the relevant change that can be matched up with our > > code > > > > already posted: > > WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps); > > > > wssOut.setAllowMTOM(true); > > > > cxfEndpoint.getOutInterceptors().add(wssOut); > > > > Thanks again. Your response saved us a lot of time. > > > > Regards, > > > > Steve > > > > dkulp wrote: > > > By default, the WSS4JOutInterceptor turns off MTOM since the > > > attachments would > > > not be signed/encrypted. Basically, it takes the "secure" route. > > > > > > You can tell it to not do that by: > > > > > > <bean class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor"> > > > <constructor-arg> > > > .... > > > </contructor-arg> > > > <property name="allowMTOM" value="true"/> > > > .... > > > > > > Dan > > > > > > -- > > > Daniel Kulp > > > [email protected] > > > http://dankulp.com/blog > > > > -- > > View this message in context: > > http://old.nabble.com/Out-of-memory-when-sending-files-%28MTOM%2C-inlinin > > g%2C-JDK-1.6%29-tp28394078p28412640.html Sent from the cxf-user mailing > > list archive at Nabble.com. -- Daniel Kulp [email protected] http://dankulp.com/blog
