JSF1064 "Unable to find or serve resource" warning on jsf 2.0
Asked Answered
K

1

12

I'm working on an Enterprise project with Java EE 5 and JSF 2.0 (Mojarra 2.0.3) on Weblogic 10.3.3

I don't have an error, but a very annoying warning in my console when going through my application.

Whenever I perform a redirect in JSF, I get a warning in my console of the following form:

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)

But in my application, the resource is displayed correctly. I don't know why this warning is being shown, when the image is loaded without a problem. I've read on an icefaces forum that it might be related to the <h:outputScript/> or the <h:outputStylesheet/> tags.

This is my usage of these tags:

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

and

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

These files are in the src/main/resources/css and src/main/resources/js folders respectively, and once again, they are correctly loaded and visible in the source code of the page. I just want to get rid of these warnings in my console.

Krenn answered 7/11, 2011 at 16:58 Comment(0)
M
11

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

The connection was aborted while the resource was still busy downloading. That can happen when you for example navigated to a different page, or pressed Esc, or the closed the browser window while the browser is still busy downloading all resources.

I checked the Mojarra source code and see the following in ResourceHandlerImpl#handleResourceRequest() (lines 292-294 in Mojarra 2.1.3):

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

So, the IOException on writing the response is been caught and forcibly handled as a 404. Personally, this should have been ignored or delegated to the servletcontainer by throws IOException, not forcibly be transformed into a HTTP 404 error.

I've reported this as issue 2245 the Mojarra guys. Until then, you can't do anything much against it, but it may be good to know that those warnings won't be logged when the javax.faces.PROJECT_STAGE is set to Production instead of Development. Instead, it will be logged as FINE.

Melodie answered 7/11, 2011 at 17:13 Comment(2)
This image can perhaps help you out more to figure out the problem. Also, this is only happening in IE9 and not in Chrome (don't know about other browsers)... The requests marked 'aborted' in the image are the ones that are causing the warnings..Krenn
I still see this being logged with PROJECT_STAGE set to ProductionLodicule

© 2022 - 2024 — McMap. All rights reserved.