【发布时间】:2016-10-27 16:34:28
【问题描述】:
我浏览过之前的帖子,也有人问过类似的问题,但我找不到解决问题的方法。 在我的应用程序中,用户可以下载文件,因此当用户单击下载时,我们的应用程序服务器在内部设置了与 Web 服务的经过身份验证的会话,该 Web 服务在 XML 响应中发送文件数据,如下所示:
<FileSerial xmlns="http://my.example.com/webservices">
<filedata>base64Binary</filedata>
<filesize>int</filesize>
<filetype>string</filetype>
<mime_type>string</mime_type>
</FileSerial>
我使用了 spring-ws 如下:
GetDocResponse docResponse = (GetDocResponse) webServiceTemplate.marshalSendAndReceive(getDoc);
FileSerial fileSerial = docResponse.getGetDocResult();
fileByte = fileSerial.getFiledata();
在几个用户点击下载后,我们的应用服务器 JVM 内存变得非常高,应用服务器没有响应,必须重新启动。 我的猜测是 fileByte 存储在我的应用程序服务器内存中,这就是问题所在。
有没有办法直接流到客户端浏览器而不存储在应用服务器内存中。
任何示例代码都会有所帮助。
【问题讨论】:
标签: java spring web-services spring-ws