gpt4 book ai didi

java - 使用 MTOM 的 WS 下载操作

转载 作者:行者123 更新时间:2023-11-30 11:36:26 24 4
gpt4 key购买 nike

我想通过带有 MTOM 的 WS 直接从 Oracle 数据库 blob 文件流式传输到 WS 客户端。

我以为我找到了这里描述的方法:

http://www.java.net/forum/topic/glassfish/metro-and-jaxb/mtom-best-practices

但是在我查看了 InputStreamDataSource 和 javax.mail.util.ByteArrayDataSource 之后,我意识到它们实际上在内存中有一个字节 [] 的“文档”,这意味着流式 ideea 是徒劳的,因为我试图避免就是在内存中同时拥有多个文档。

那么如何通过 WS 和 MTOM 从数据库流式传输到 WS 客户端?

有什么想法吗?

谢谢

克里斯

最佳答案

我尝试过实验,最后得到了一些积极的结果。

为了从数据库直接流式传输到客户端浏览器,上面事情是有效的,但 InputStreamDataSource 应该是这样的:

public class InputStreamDataSource implements DataSource {
private InputStream inputStream;

public InputStreamDataSource(InputStream inputStream) {
this.inputStream = inputStream;
}

public InputStream getInputStream() throws IOException {
return inputStream;
}

public OutputStream getOutputStream() throws IOException {
throw new UnsupportedOperationException("Not implemented");
}

public String getContentType() {
return "*/*";
}

public String getName() {
return "InputStreamDataSource";
}
}

我害怕的是一旦我自己关闭了输入流...ws 客户端没有收到二进制内容...

我检查了一下,实际上 DataHandler 创建了一个新线程并关闭了输入流

我能够将 500MB 的数据从数据库快速流式传输到客户端,而且内存占用很小!

关于java - 使用 MTOM 的 WS 下载操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14522489/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com