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(ByteArrayOutputStreamEx.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(ValidatingUnmarshaller.java:109)
4
com.sun.xml.bind.v2.runtime.unmarshaller.MTOMDecorator.startElement(MTOMDecorator.java:103)
5
com.sun.xml.bind.v2.runtime.unmarshaller.InterningXmlVisitor.startElement(InterningXmlVisitor.java:71)
6
com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.handleStartElement(StAXStreamConnector.java:242)
7
com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.bridge(StAXStreamConnector.java:176)
8
com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:360)
9
com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:339)
10
org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:646)
11
org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:533)
12 org.apache.cxf.jaxb.io.DataReaderImpl.read(DataReaderImpl.java:128)
13
org.apache.cxf.interceptor.DocLiteralInInterceptor.handleMessage(DocLiteralInInterceptor.java:188)
14
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:236)
15
org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:104)
16
org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:98)
17
org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:392)
18
org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:170)
19
org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:142)
20
org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:45)
21 javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
22
org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:101)
23
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
24
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
25
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
26
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
27
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
28
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
29
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java: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:668)
1
org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:533)
2 org.apache.cxf.jaxb.io.DataReaderImpl.read(DataReaderImpl.java:128)
3
org.apache.cxf.interceptor.DocLiteralInInterceptor.handleMessage(DocLiteralInInterceptor.java:188)
4
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:236)
5
org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:104)
6
org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:98)
7
org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:392)
8
org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:170)
9
org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:142)
10
org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:45)
11 javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
12
org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:101)
13
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
14
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
15
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
16
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
17
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
18
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
19
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java: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.java:891)
26
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java: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-inlining%2C-JDK-1.6%29-tp28394078p28412640.html
> Sent from the cxf-user mailing list archive at Nabble.com.
>
>