Pregunta

Me he encontrado con un extraño problema en una aplicación web Grails ejecuta en Grails:

java.io.UnsupportedEncodingException se lanza con bastante frecuencia debido a diversas cadenas de codificación desconocidos (como "ISO8859_10", "ISO-8859-10"), y lo extraño es que esto se hace enteramente dentro del código de resina y Grails. Es decir -. Ningún código personalizado está involucrado cuando se produce la excepción

No estoy seguro de si se trata de Grails o código del contenedor de servlets que debe manejar la excepción. Pero me gustaría suponer que la excepción debe ser manejado en algún lugar y no brotan todo el camino a stderr.

Esta es la excepción en su totalidad:

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)

Mis preguntas:

  • ¿Debe ser manejado la excepción? Si es así, ¿es responsabilidad del contenedor de servlets (resina) o en el marco de la Web (Grails)?
  • ¿Cómo haría usted para resolver esto? (Prefiero no tener el registro de excepciones abarrotada de excepciones que puedo hacer nada al respecto.)
¿Fue útil?

Solución

No sé mucho acerca de Grails, pero tal vez usted podría tratar de averiguar donde esta codificación extraña viene.

Haga sus peticiones envían Accept-Charset cabeceras? Hacer las cosas funcionan mejor si se establece el "file.encoding" propiedad del sistema a algo significativo como UTF-8 en su resin.conf?

Otros consejos

También puede configurar un grano de localeResolver en su contexto de aplicación. El DispatcherServlet que utilizará para resolver la configuración regional. No he probado a mí mismo, pero mi sugerencia es utilizar el org.springframework.web.servlet.i18n.FixedLocaleResolver. Se delegará en Locale.getDefault() si usted no tiene ninguna configuración.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top