Thanks for your reply Dan. It seems I have to add something like a ftp server into the mix.
I have read ActiveMQ support blob messages using out-of-band transport. Do you perhaps know if I can register something with CXF so it supports activemq BlobMessage on the client and server side? Robert On Thu, 28 Feb 2019 at 16:23, Daniel Kulp <[email protected]> wrote: > > This is almost certainly not going to work. The JMS spec doesn’t really > have a way to stream things, so it always holds the entire message in > memory. (StreamMessage doesn’t actually stream) > > > Dan > > > > > On Feb 28, 2019, at 10:11 AM, Robert . <[email protected]> > wrote: > > > > Hi cxf users and developers, > > > > I'm using MTOM to send large files. This works great for SOAP HTTP > > requests. Both the client and server can send the messages with low > memory > > consumption. > > Unfortunately when I use SOAP JMS I get a heap space OutOfMemoryError. > > I tried using CXF 3.2.7 and 3.3.0. > > Any help is very much appreciated. > > > > This is the stack trace: > > > > Caused by: java.lang.OutOfMemoryError: Java heap space > > at java.io.ByteArrayOutputStream.<init>(ByteArrayOutputStream.java:77) > > at > org.apache.cxf.helpers.IOUtils.readBytesFromStream(IOUtils.java:401) > > at > > org.apache.cxf.io > .CachedOutputStream.getBytes(CachedOutputStream.java:306) > > at > > > org.apache.cxf.transport.jms.MessageStreamUtil$SendingOutputStream.doClose(MessageStreamUtil.java:81) > > at > > org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:222) > > at > > org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56) > > at org.apache.cxf.transport.jms.JMSConduit.close(JMSConduit.java:104) > > at > > > org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:63) > > at > > > org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308) > > at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:531) > > at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:440) > > at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:355) > > at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:313) > > at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96) > > at > > org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:140) > > at com.sun.proxy.$Proxy76.addDocumentMtom(Unknown Source) > > > > > > I have configure my JaxWsProxyFactoryBean like this: > > > > JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); > > Map<String, Object> props = new HashMap<>(); > > props.put("mtom-enabled", Boolean.TRUE); > > factory.setProperties(props); > > factory.setFeatures(Collections.singletonList(new > > ConnectionFactoryFeature(connectionFactory))); > > > > > factory.setTransportId(JMSSpecConstants.SOAP_JMS_SPECIFICATION_TRANSPORTID); > > factory.setServiceClass(DocumentServiceOneWay.class); > > > > > factory.setAddress("jms:queue:DocumentServiceQueue?sessionTransacted=true"); > > > > Kind regards, > > Robert > > -- > Daniel Kulp > [email protected] <mailto:[email protected]> - http://dankulp.com/blog < > http://dankulp.com/blog> > Talend Community Coder - http://talend.com <http://coders.talend.com/> >
