我试图将一个较大的XML文件(超过1.5M)写入ServletOutputStream,这确实需要很长时间,接近7分钟左右甚至更长。
我正在做的事情如下-

1. SOAPMessage soapRes; // Consider this is populated somewhere and we have the value here
2. ServletResponse res; // Consider this is populated somewhere and we have the value here
3. ServletOutputStream os = res.getOutputStream();
4. ByteArrayOutputStream baos = new ByteArrayOutputStream();
5. soapRes.writeTo(baos);
6. os.write(baos.toByteArray());


在最后-

7. baos.close();
8. os.flush();
9. os.clse();


我想到了ServletOutputStream的子类并覆盖了write(),但由于第3行的类强制转换问题而无法使用。
我还尝试从SOAPMessage中提取内容的长度,并在第6行的write()方法中传递该值,甚至将其作为ByteArrayOutputStream第4行的构造函数参数,但均无用。
任何建议都是最欢迎的。

注意我之前忘了提到这一点,我正在Apache Tomcat上运行它。 JUnit测试没有这样的问题,它的处理速度非常快,可以在几秒钟内完成,但是当我在Tomcat上运行它时,会花费很长时间。

最佳答案

正如在问题的评论中提到的,找到了答案。
问题出在客户端(TCPMon)而不是代码。

关于java - ServletOutputStream编写时间太长,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8800620/

10-11 13:07