Tag: mtom

使用SOAPHandler时MTOM无法正常工作

我尝试使用Mtom传输文件,它工作得很好,直到我使用SoapHandler来validation客户端签名。 SoapHandler保留所有消息并将其更改为base64编码。 因此,当我尝试获取大文件时,Jvm会抛出堆大小exception。 你们知道解决这个问题的方法吗?

手动解析MTOM消息

我将mtom响应作为字符串 –uuid:6b6fab3b-c481-4648-9eb5-8690096eb54d Content-Type: application/xop+xml; charset=UTF-8; type=”application/soap+xml”; Content-Transfer-Encoding: binary Content-ID: GIB-XXXX-201512-KB-000000.zip –uuid:6b6fab3b-c481-4648-9eb5-8690096eb54d Content-Type: application/octet-stream Content-Transfer-Encoding: binary Content-ID: Content-Disposition: attachment;name=”GIB-XXXX-201512-KB-000000.zip” /***********MTOM Content****************/ –uuid:6b6fab3b-c481-4648-9eb5-8690096eb54d– 我正在使用CXFunit testing代码来解析有关xop / mtom解析的上述内容 附件始终为null并且在执行itr.next()时; 一行,我得到exceptionjava.lang.IndexOutOfBoundsException:索引:0,大小:0 InputStream is = null; InputStream attIs = null; try { org.apache.cxf.message.Message cxfMessage = new MessageImpl(); is = new ByteArrayInputStream(response.getBytes(“UTF-8”)); // FileInputStream fis = new FileInputStream(new File( // “D:/wss/gibreturn.txt”)); […]

使用MTOM进行WS下载操作

我想直接从Oracle数据库blobs文件通过WS与MTOM直接流到WS客户端。 我以为我找到了一种方法,在这里描述: http://www.java.net/forum/topic/glassfish/metro-and-jaxb/mtom-best-practices 但是在我看了一下InputStreamDataSource和javax.mail.util.ByteArrayDataSource后,我意识到他们在内存中存在一个’文档’的字节[]意味着流的ideea是徒劳的,因为我试图避免的是多个文档同时完全在内存中。 那么如何从数据库通过WS和MTOM流式传输到WS客户端? 任何的想法 ? 谢谢 克里斯

在Spring Web Services Framework中流式传输MTOM Web服务

我想使用MTOM和Spring WS将大文件从服务器发送到客户端。 我意识到这不是这类事情的最佳方法,但这是一项要求。 我有MTOM设置,它适用于50mb左右的小文件。 我遇到较大文件的内存不足错误,并通过更改不同的堆空间大小,我可以发送稍大的文件,但没有接近1GB。 1GB是我的测试用例。 如何将MTOM服务从服务器流式传输或分块到客户端? 我正在使用Java 6更新17,Tomcat 6和Spring WS 1.5.7以及SaajSoapMessageFactory。 我找到了使用jax-ws进行流式传输的示例,但我不确定如何将其合并到Spring WS端点中。 使用MTOM / XOP优化二进制数据传输

使用JAX-WS构建大型MTOM / XOP消息

我有一个关于将MTOM / XOP与JAX-WS一起使用的问题。 我正在编写一个发送大量二进制数据的Web服务。 客户端请求许多文件,服务器返回响应中的文件。 我能够正确地构建响应,以便正确实现XOP,但我遇到了与内存相关的问题,因为它在发送之前将整个响应存储在内存中。 此Web服务发送的文件可能会变得非常大(例如,giga-bytes large),因此将响应存储在内存中不是一种选择。 这个Oracle网站 (以及这个网站 )似乎解决了这个问题,但我只是不理解它。 我认为他们使用DataHandler对象来传输请求/响应,但我无法弄清楚它们如何实例化它。 我正在使用wsimport从现有的WSDL生成我的JAX-WS类文件。 我正在使用JAX-WS RI 2.1.6和Java 6。 我如何在建立响应时发送响应,而不必先将所有响应存储在内存中? 在此先感谢您的帮助。 更新12月17日:我将以下属性添加到保存二进制数据的WSDL中的schema元素。 这会导致wsimport将DataHandler对象添加到JAXB类。 然后可以将FileDataHandler添加到响应中,而不是添加文件的全部内容,从而允许服务器流式传输每个文件的内容,而不是将它们全部保存在内存中: xmlns:xmime=”http://www.w3.org/2005/05/xmlmime” xmime:expectedContentTypes=”application/octet-stream” 因此,服务器现在正确地构建响应,并且客户端在收到请求时正确地将每个文件保存到磁盘。 但是,客户端仍然会出于某种原因将整个响应读入内存。 服务器代码(SIB): @MTOM @StreamingAttachment(parseEagerly = true, memoryThreshold = 4000000L) @WebService(…) public class DownloadFilesPortTypeImpl implements DownloadFilesPortType { @Override public FileSetResponseType downloadFileSet(FileSetRequestType body) { FileSetResponseType response = new FileSetResponseType(); for (FileRequest freq […]

如何使用java解析XOP / MTOM SOAP响应?

我只是想知道,有没有简单的方法来解析MTOM / XOP SOAP响应。 问题是我使用普通HTTP发送soap消息和javax.xml来解析响应。 但是有些服务用mulipart / related响应我,它需要更复杂的逻辑来解析它(性能很重要)。 所以我想我可以以某种方式利用apache cxf,apache axiom或任何其他库来解析MTOM / XOP SOAP响应吗?