WAR-файл работает в tomcat, но выдает ошибки UTF-8 в Jetty, почему? - PullRequest
0 голосов
/ 23 марта 2011

У меня есть веб-приложение на Java, которое я разработал локально с помощью m2eclipse + Jetty + eclipse, и которое развернуло по ночам в Tomcat. С Jetty я получаю UTF-8 error, когда отправляю сообщения AJAX на сервер. Тот же код отлично работает в Tomcat.

Со стороны Jetty я вижу все параметры записи, и все записывается в файлы журнала, но затем выдается исключение времени выполнения, сообщающее, что кодировка не распознана.

Все мои страницы кодируются как UTF-8, а заголовки в Посте - UTF-8. Похоже, что-то в Jetty или Eclipse не нравится кодировка utf-8, и я не могу понять, что это может быть.

есть мысли?

Обновление:
вот трассировка стека.

[Click] [error] java.io.UnsupportedEncodingException: UTF-8;org.eclipse.jetty.io.RuntimeIOException: java.io.UnsupportedEncodingException: UTF-8;
    at org.eclipse.jetty.io.UncheckedPrintWriter.setError(UncheckedPrintWriter.java:107)
    at org.eclipse.jetty.io.UncheckedPrintWriter.write(UncheckedPrintWriter.java:280)
    at org.eclipse.jetty.io.UncheckedPrintWriter.write(UncheckedPrintWriter.java:295)
    at org.apache.click.ClickServlet.handleAjaxException(ClickServlet.java:1972)
    at org.apache.click.ClickServlet.handleException(ClickServlet.java:458)
    at org.apache.click.ClickServlet.handleRequest(ClickServlet.java:390)
    at org.apache.click.ClickServlet.doPost(ClickServlet.java:294)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:533)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:475)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:514)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:920)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:403)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:184)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:856)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
    at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:247)
    at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:151)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:114)
    at org.eclipse.jetty.server.Server.handle(Server.java:352)
    at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:596)
    at org.eclipse.jetty.server.HttpConnection$RequestHandler.content(HttpConnection.java:1066)
    at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:805)
    at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:218)
    at org.eclipse.jetty.server.HttpConnection.handle(HttpConnection.java:426)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:510)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint.access$000(SelectChannelEndPoint.java:34)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:40)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:450)
    at java.lang.Thread.run(Thread.java:662)
Caused by: java.io.UnsupportedEncodingException: UTF-8;
    at sun.nio.cs.StreamEncoder.forOutputStreamWriter(StreamEncoder.java:42)
    at java.io.OutputStreamWriter.<init>(OutputStreamWriter.java:83)
    at org.eclipse.jetty.server.HttpWriter.getConverter(HttpWriter.java:268)
    at org.eclipse.jetty.server.HttpWriter.write(HttpWriter.java:125)
    at org.eclipse.jetty.server.HttpWriter.write(HttpWriter.java:107)
    at org.eclipse.jetty.io.UncheckedPrintWriter.write(UncheckedPrintWriter.java:271)
    ... 31 more

Ответы [ 2 ]

2 голосов
/ 23 марта 2011
java.io.UnsupportedEncodingException: UTF-8;

Эта точка с запятой подозрительна. Это не является частью обычного сообщения об ошибке / трассировки.

Уверен, что вы или Ajax не установили Content-Type на text/html;charset=UTF-8; или что-то еще? Используйте трекер HTTP-запросов, например, Firebug . Я бы посчитал это еще одной ужасной ошибкой в ​​Jetty. Очевидно, он не ожидает более двух атрибутов в заголовке. Если вам нравится Джетти, сообщите об этом парням Джетти.

0 голосов
/ 30 марта 2011

я нашел ответ на свой вопрос.Я использую Apache Click Framework и недавно обновил с версии 2.2.0 до 2.3.0-RC1.В версии 2.3.0-RC1 была введена ошибка, из-за которой дублированные заголовки contentType отправлялись по запросам AJAX.Tomcat смог изящно обработать неправильно построенный заголовок, Jetty не смог.

В итоге я применил временное исправление, переопределив функцию проблемы.

...