2013-09-15 5 views
1

Я получаю это исключение для каждой запрашиваемой страницы в своем веб-приложении. Поскольку он не указывает на какой-либо код приложения, его сложно отладить и проверить, что вызывает проблему.MalformedInputException на каждой запрошенной странице

Это что-то, что я должен волноваться? Есть ли способ игнорировать это исключение? Стоит сказать, что страницы отлично обрабатываются.

Java 1.7.0_25, Apache Tomcat 7.0.27, Mojarra 2.1.13 и PrettyFaces 3.3.3 как решение для перезаписи URL-адресов.

Sep 15, 2013 2:21:48 PM org.apache.catalina.core.StandardWrapperValve invoke 
SEVERE: Servlet.service() for servlet [Faces Servlet] in context with path [] threw exception 
java.nio.charset.MalformedInputException: Input length = 1 
    at java.nio.charset.CoderResult.throwException(CoderResult.java:260) 
    at java.nio.charset.CharsetDecoder.decode(CharsetDecoder.java:781) 
    at com.sun.faces.application.ByteArrayWebOutputStream.writeTo(ByteArrayWebOutputStream.java:112) 
    at com.sun.faces.application.ViewHandlerResponseWrapper.flushToWriter(ViewHandlerResponseWrapper.java:162) 
    at com.sun.faces.application.view.JspViewHandlingStrategy.renderView(JspViewHandlingStrategy.java:263) 
    at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:124) 
    at com.ocpsoft.pretty.faces.application.PrettyViewHandler.renderView(PrettyViewHandler.java:163) 
    at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121) 
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) 
    at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) 
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at com.ocpsoft.pretty.PrettyFilter.doFilter(PrettyFilter.java:145) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at br.com.tostring.weblibrary.filters.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:23) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565) 
    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1812) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
    at java.lang.Thread.run(Thread.java:662) 

я понял, что это исключение происходит только тогда, когда я добавить JSTL-1.1.0.jar в пути к классам, чтобы избежать java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config. Если я удалю эту банку, MalformedInputException остановится, но будет выброшен NoClassDefFoundError.

ответ

1

MalformedInputException, которое генерируется, когда последовательность входных байтов не является легальной для данной кодировки, или последовательность входных символов не является законной шестнадцатибитной последовательностью Unicode.

Это происходит во время рендеринга рендеринга, поэтому я бы предположил, что у вас есть что-то в вашем шаблоне Facelet/XHTML или в другом месте, которое пытается записать содержимое другой кодировки в выходной поток.

Используете ли вы какие-либо расширения или конфигурации для изменения выходного потока?

+0

Привет @lincoln, у меня нет какой-либо модификации выходного потока. Любопытная часть заключается в том, что это происходит только в моей производственной среде и не происходит в развитии (местном) Tomcat. –

+0

Знаете ли вы, имеет ли ваша производственная среда модифицированный файл catalina.xml? Не уверен, что может вызвать эту разницу. – Lincoln

+0

Да, я загрузил всю папку Tomcat с моего сервера по FTP, и я начал ее локально. Исключение не было выбрано в моем экземпляре. –

Смежные вопросы