11

我正在 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/csssrc/main/resources/js文件夹中,并且再次正确加载并在页面的源代码中可见。我只想在我的控制台中摆脱这些警告。

4

1 回答 1

10

java.net.SocketException:软件导致连接中止:套接字写入错误

当资源仍在忙于下载时,连接被中止。例如,当您导航到不同的页面、按下Esc或在浏览器仍在忙于下载所有资源时关闭浏览器窗口时,可能会发生这种情况。

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

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

因此,IOException在写入响应时,将被捕获并强制处理为 404。就个人而言,这应该被忽略或委托给 servletcontainer throws IOException,而不是强制转换为 HTTP 404 错误。

我已将此报告为Mojarra 人的issue 2245 。javax.faces.PROJECT_STAGE在那之前,你不能对它做太多的事情,但最好知道当设置为Production而不是时不会记录这些警告Development。相反,它将被记录为FINE.

于 2011-11-07T17:13:39.740 回答