WebLogic文件传输失败?java.io.IOException:未能读取';2607';来自InputStream的字节数

WebLogic文件传输失败?java.io.IOException:未能读取';2607';来自InputStream的字节数,java,internet-explorer,weblogic,file-transfer,Java,Internet Explorer,Weblogic,File Transfer,我们有一个WebLogic应用程序,提供PDF文件(以及许多其他内容) 我们有这样的问题,有时一些文件似乎失败时加载Internet Explorer WebLogic版本10.3.3.0 IE 8.0目前测试呈阳性 Firefox也有问题 可能有一些文件在IE上有问题,但在Firefox上没有问题(不是100%确定) 对于不同计算机上的某些文件(至少有几次)似乎会发生这种情况 大多数文件工作正常 PDF文件是预先生成的,可在文件系统中使用 在出现这些错误时,我们会得到以下堆栈跟踪: #

我们有一个WebLogic应用程序,提供PDF文件(以及许多其他内容)

我们有这样的问题,有时一些文件似乎失败时加载Internet Explorer

  • WebLogic版本10.3.3.0
  • IE 8.0目前测试呈阳性
  • Firefox也有问题
    • 可能有一些文件在IE上有问题,但在Firefox上没有问题(不是100%确定)
  • 对于不同计算机上的某些文件(至少有几次)似乎会发生这种情况
  • 大多数文件工作正常
  • PDF文件是预先生成的,可在文件系统中使用
在出现这些错误时,我们会得到以下堆栈跟踪:

####<Aug 16, 2012 10:30:26 AM EEST> <Error> <HTTP> <host-name> <Front2S> <[ACTIVE] ExecuteThread: '15' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1345102226691> <WL-101019> <[ServletContext@454961994[app:appname module:modulename path:/pathname spec-version:2.5]] Servlet failed with IOException
java.io.IOException: failed to read '2607' bytes from InputStream; clen: 162774 remaining: 2607 count: 1359
        at weblogic.servlet.internal.ChunkOutput.writeStream(ChunkOutput.java:417)
        at weblogic.servlet.internal.ChunkOutputWrapper.writeStream(ChunkOutputWrapper.java:178)
        at weblogic.servlet.internal.ServletOutputStreamImpl.writeStream(ServletOutputStreamImpl.java:520)
        at weblogic.servlet.internal.ServletOutputStreamImpl.writeStream(ServletOutputStreamImpl.java:508)
        at weblogic.servlet.FileServlet.sendFile(FileServlet.java:410)
        at weblogic.servlet.FileServlet.doGetHeadPost(FileServlet.java:234)
        at weblogic.servlet.FileServlet.service(FileServlet.java:173)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:821)
        at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
        at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
        at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:27)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:57)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:344)
        at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84)
    ...
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:356)
        at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:151)
        at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:238)
        at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:168)
        at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3650)
        at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
        at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2174)
        at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1446)
        at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)

#####关于错误原因,您是对的。当文件在读取过程中被修改时,就会发生此问题

资源重新加载检查秒的配置正确。将其保持为0(零),以便WLS将重新加载最新的文件

检查是否正在使用页面检查秒数设置,以及该设置的值是否为0。此设置将覆盖资源重新加载检查秒数,因此如果您的值不同于0(零),则将其设置为0

总之,我的建议是在weblogic.xml中添加值为0的页面检查秒数设置,并增加weblogic.Chunksize,以防请求大小过大。该属性的值应该是减去任何以太网或TCP报头大小后网络MTU的倍数

我希望weblogic.xml的以下配置将对您有所帮助:

<jsp-descriptor>
    <page-check-seconds>0</page-check-seconds>
</jsp-descriptor>
<container-descriptor>
    <resource-reload-check-secs>0</resource-reload-check-secs>
</container-descriptor>

0
0

此外请注意,这个问题有补丁修复。

我们不使用页面检查秒设置ATM,要考虑明确设置为0。谢谢我忘了提到,除了页面检查秒配置,如果您的请求大小很大,您也可以考虑增加-dWebLogig.CukSKEY。该属性的值应该是减去任何以太网或TCP报头大小后网络MTU的倍数。
<jsp-descriptor>
    <page-check-seconds>0</page-check-seconds>
</jsp-descriptor>
<container-descriptor>
    <resource-reload-check-secs>0</resource-reload-check-secs>
</container-descriptor>