JSF1064 "无法找到或提供资源" 警告在 JSF 2.0 上

11

我正在使用Java EE 5和JSF 2.0 (Mojarra 2.0.3) 在Weblogic 10.3.3上开发一个企业项目。

我没有错误,但是在我的应用程序中进行操作时,控制台中会出现一个非常恼人的警告。

每当我执行JSF中的重定向时,控制台都会显示以下形式的警告:

Nov 7, 2011 5:36:46 PM com.sun.faces.application.resource.ResourceHandlerImpl logMissingResource
WARNING: JSF1064: Unable to find or serve resource, images/jquery-theme/ui-icons_cc0000_256x240.png.
Nov 7, 2011 5:36:46 PM com.sun.faces.application.resource.ResourceHandlerImpl logMissingResource
WARNING: 
java.net.SocketException: Software caused connection abort: socket write error
    at java.net.SocketOutputStream.socketWrite0(Native Method)
    at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
    at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
    at weblogic.servlet.internal.ChunkOutput.writeChunkTransfer(ChunkOutput.java:507)
    at weblogic.servlet.internal.ChunkOutput.writeChunks(ChunkOutput.java:486)
    at weblogic.servlet.internal.ChunkOutput.flush(ChunkOutput.java:382)
    at weblogic.servlet.internal.ChunkOutput$2.checkForFlush(ChunkOutput.java:580)
    at weblogic.servlet.internal.ChunkOutput.write(ChunkOutput.java:306)
    at weblogic.servlet.internal.ChunkOutputWrapper.write(ChunkOutputWrapper.java:146)
    at weblogic.servlet.internal.ServletOutputStreamImpl.write(ServletOutputStreamImpl.java:138)
    at java.nio.channels.Channels$WritableByteChannelImpl.write(Channels.java:275)
    at com.sun.faces.application.resource.ResourceHandlerImpl.handleResourceRequest(ResourceHandlerImpl.java:277)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:310)

但是在我的应用程序中,资源被正确显示。我不知道为什么会出现这个警告,因为图片没有问题地加载。我在一个icefaces论坛上读到可能与<h:outputScript/><h:outputStylesheet/>标签有关。

这是我使用这些标签的方式:

<h:outputStylesheet name="jquery-theme/jquery-ui-1.8.16.custom.css" library="css"/>

<h:outputScript name="jquery-ui-1.8.16.custom.min.js" library="js"/>

这些文件分别位于 src/main/resources/csssrc/main/resources/js 文件夹中,它们在页面的源代码中正确加载并可见。 我只想消除控制台中的这些警告。

1个回答

10

java.net.SocketException: Software caused connection abort: socket write error

在资源仍在繁忙下载时,连接被中止。例如,在浏览器仍在下载所有资源时导航到其他页面、按下Esc键或关闭浏览器窗口时可能发生这种情况。

我检查了Mojarra源代码,并在ResourceHandlerImpl#handleResourceRequest()中看到以下内容(Mojarra 2.1.3的292-294行):

} catch (IOException ioe) {
    send404(context, resourceName, libraryName, ioe, true);
}

在写响应时出现的 IOException 被捕获并被强制处理为 404 错误。个人认为,应该通过 throws IOException 将其忽略或委托给 Servlet 容器,而不是强制转换为 HTTP 404 错误。

我已将此报告给 Mojarra 的开发人员作为问题2245。在那之前,除了将 javax.faces.PROJECT_STAGE 设置为 Production 而不是 Development 以外,你无法做太多事情,但值得注意的是当设置为 Production 时,这些警告将不会记录。相反,它将被记录为 FINE


这个 图片 或许可以帮助你更好地找出问题所在。此外,这只发生在IE9中而不是Chrome(不知道其他浏览器)... 图片中标记为“已中止”的请求是导致警告的请求。 - Dieter Hubau
7
我仍然看到这条日志记录中的 PROJECT_STAGE 被设置为 Production。 - DD.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接