jsf 2.0 上的 JSF1064“无法找到或提供资源”警告
Posted
技术标签:
【中文标题】jsf 2.0 上的 JSF1064“无法找到或提供资源”警告【英文标题】:JSF1064 "Unable to find or serve resource" warning on jsf 2.0 【发布时间】:2011-12-23 19:11:04 【问题描述】:我正在 Weblogic 10.3.3 上使用 Java EE 5 和 JSF 2.0 (Mojarra 2.0.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/css
和src/main/resources/js
文件夹中,并且再次正确加载并在页面的源代码中可见。我只想在我的控制台中摆脱这些警告。
【问题讨论】:
【参考方案1】:java.net.SocketException:软件导致连接中止:套接字写入错误
资源仍在忙于下载时,连接被中止。例如,当您导航到不同的页面、按下 Esc 或在浏览器仍在忙于下载所有资源时关闭浏览器窗口时,可能会发生这种情况。
我检查了 Mojarra 源代码并在 ResourceHandlerImpl#handleResourceRequest()
中看到以下内容(Mojarra 2.1.3 中的第 292-294 行):
catch (IOException ioe)
send404(context, resourceName, libraryName, ioe, true);
因此,写入响应时的IOException
被捕获并强制处理为404。就个人而言,这应该被throws IOException
忽略或委托给servletcontainer,而不是强制转换为HTTP 404 错误。
我已将此事报告为 issue 2245 Mojarra 伙计们。在那之前,你不能对它做太多的事情,但最好知道当javax.faces.PROJECT_STAGE
设置为Production
而不是Development
时不会记录这些警告。相反,它将被记录为FINE
。
【讨论】:
这个image 或许可以帮助您更多地找出问题所在。此外,这仅在 IE9 中发生,而不在 Chrome 中发生(不了解其他浏览器)......图像中标记为“中止”的请求是导致警告的请求...... 我仍然看到它被记录在 PROJECT_STAGE 设置为生产以上是关于jsf 2.0 上的 JSF1064“无法找到或提供资源”警告的主要内容,如果未能解决你的问题,请参考以下文章
JSF1064:找不到资源!只有当我在 Firefox 中使用我的项目时
JSF 2.0 有比 Icefaces 更好的 Ajax Push