我试图将一个较大的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/