UndupportedededEndingException брошен при использовании смолы и грамоты

StackOverflow https://stackoverflow.com/questions/2749528

Вопрос

Я столкнулся с странной проблемой в Grails WebApp, работающий под грамами:

java.io.UnsupportedEncodingException брошен довольно часто из-за различных неизвестных строк кодирования (например, "ISO8859_10", "ISO-8859-10"), и странная вещь состоит в том, что это делается полностью в пределах смолы и кода Grails. То есть - ни один пользовательский код не участвует, когда исключение брошено.

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

Это исключение в полном объеме:

java.io.UnsupportedEncodingException: ISO-8859-10
  at com.caucho.vfs.i18n.JDKWriter$OutputStreamEncodingWriter.<init>(JDKWriter.java:112)
  at com.caucho.vfs.i18n.JDKWriter.create(JDKWriter.java:79)
  at com.caucho.vfs.Encoding.getWriteEncoding(Encoding.java:231)
  at com.caucho.server.connection.ToByteResponseStream.setEncoding(ToByteResponseStream.java:137)
  at com.caucho.server.connection.AbstractHttpResponse.setLocale(AbstractHttpResponse.java:1683)
  at com.caucho.server.connection.HttpServletResponseImpl.setLocale(HttpServletResponseImpl.java: 115)
  at javax.servlet.ServletResponseWrapper.setLocale(ServletResponseWrapper.java:139)
  at javax.servlet.ServletResponseWrapper.setLocale(ServletResponseWrapper.java:139)
  at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1035)
  at org.codehaus.groovy.grails.web.servlet.GrailsDispatcherServlet.doDispatch(GrailsDispatcherServlet.java:290)
  at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)
  at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647)
  at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:552)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:114)

Мои вопросы:

  • Если исключение будет обрабатываться? Если это так, является ли ответственностью контейнера сервлета (смола) или веб-каркас (Grails)?
  • Как бы вы пошли о решении этого? (Я бы предпочел не иметь бревна исключения, загроможден исключениями, что я могу ничего не делать.)
Это было полезно?

Решение

Я не знаю много о Граалях, но, возможно, вы можете попытаться выяснить, откуда исходит эта странная кодировка.

Сделайте ваши запросы отправляют принять-образные заголовки? Все работают лучше, если вы устанавливаете свойство системы «File.encoding» для чего-то значимого, такого как UTF-8 в вашей смоле.

Другие советы

Вы также можете настроить localeResolver боб в вашем контексте приложения. То DispatcherServlet будет использовать это для разрешения локали. Я не пробовал это сам, но мое предложение - использовать org.springframework.web.servlet.i18n.FixedLocaleResolver. Отказ Это будет делегировать Locale.getDefault() Если у вас нет настроек.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top