JAX-WSRI不从客户端流式传输数据



我已经用JAX-WS RI编写了一个简单的上传服务。类由XJC以DataHandler类型生成。在编码时,CCD_ 2和CCD_。现在,当客户端(.NET客户端)使用MTOM multipart/related发送上载的数据时,数据被接收,但数据处理程序中的数据源是com.sun.istack.ByteArrayDataSourcejava.io.ByteArrayInputStream。这意味着来自客户端的流被完全消耗到内存中。文件越大,内存就越大。

经过几次谷歌搜索,我没有发现任何东西,只是一些关于SOAP处理程序的SO问题,我没有。还没有成功。

我启动了一个调试会话,发现数据内部包含在StreamingDataHandler中,这是推荐的方式,但MtomCodec会查询附件的长度,并导致底层数据对象将输入流完全消耗到内存中。故事结束了。

这对我来说似乎相当脑死亡,因为MTOM的整个优化已经完全消失了。

有人知道解决这个问题的办法吗?否则,JAX-WSRI中的整个方法似乎毫无用处,我不得不求助于REST.

这可能是使用SOAPHandler时MTOM不工作的重复。结果是一样的。

就其价值而言,我在:

  • Tomcat 6.0.41
  • Java 7
  • JAXB 2.2.11
  • JAX-WS 2.2.10

经过进一步的调试会话和在网上的搜索,我发现了一些JIRA问题和博客文章,这些问题在JAX-WS RI中已经完全崩溃。一旦你有了一个处理者,你就会迷失方向。这适用于传出流,但尤其适用于传入流。

最后,JAX-WSRI对于文件交互来说是不可用的。我必须在某个时刻评估ApacheCXF。

相关内容

  • 没有找到相关文章

最新更新