使用Java为SOAP定制DataHandler
我有一个应用程序,其中两个进程使用SOAP进行通信。一个文件正在从进程A传输到进程B。进程B将在其中将其存储到数据库
opqData.setBase64Binary(new DataHandler(new FileDataSource(file)));
其中file是需要存储到数据库的数据。 但是现在我想在将数据存储到DB时压缩数据。一个选项是压缩文件并将其作为FileDataSource发送。但是我不能使用它,因为我们有1000多个这样的文件,它在文件结构中创建了很多zip条目,创建zip是额外的开销
因此,我考虑将DataHandler实现为GzipDataHandler,返回的输入流是进程B的gzipInputStream。因此,数据将被压缩并存储到数据库中
然而,我对如何为我的新GzipDataHandler编写getInputStream方法感到困惑
以前有人试过这样的吗?或者我可以从Java和SOAP专家那里得到一些建议吗
谢谢,
乔希
# 1 楼答案
嗯。我找到了解决办法。 解决方案不是更改DataHandler,而是更改FileDataSource
创建一个新的FileDataSource,比如ZipFileDataSource,扩展FileDataSource并实现getInputStream方法
您的getInputStream方法应该读取该文件,gziOutputStream应该对其进行压缩,并且应该通过管道将其传递给调用者
上面是示例代码
问候,
乔希
# 2 楼答案
这可能会帮助您:
http://www.exampledepot.com/egs/java.util.zip/CompressFile.html