Предупреждение JSF1064 «Не удается найти или обслужить ресурс» в jsf 2.0 - PullRequest
9 голосов
/ 07 ноября 2011

Я работаю над проектом Enterprise с 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/css и src/main/resources/js соответственно, и, опять же, они правильно загружены и видны в исходном коде страницы. Я просто хочу избавиться от этих предупреждений в своей консоли.

1 Ответ

8 голосов
/ 07 ноября 2011

java.net.SocketException: программное обеспечение вызвало прерывание соединения: ошибка записи в сокет

Соединение было прервано, пока ресурс все еще был занят загрузкой.Это может произойти, например, когда вы перешли на другую страницу, нажали Esc или закрыли окно браузера, когда браузер все еще загружен, загружая все ресурсы.

Я проверил источник Mojarraкод и смотрите следующее в ResourceHandlerImpl#handleResourceRequest() (строки 292-294 в Мохарре 2.1.3):

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

Итак, IOException при написании ответа перехватывается и принудительно обрабатывается как 404.Лично это должно было быть проигнорировано или делегировано сервлет-контейнеру throws IOException, а не принудительно преобразовано в ошибку HTTP 404.

Я сообщил об этом как выпуск 2245 ребята из Мохарры,До этого вы ничего не можете сделать против этого, но может быть полезно знать, что эти предупреждения не будут регистрироваться, если для javax.faces.PROJECT_STAGE установлено Production вместо Development.Вместо этого он будет зарегистрирован как FINE.

...