Question

Je l'ai rencontré un problème étrange dans une webapp Grails fonctionnant sous Grails:

java.io.UnsupportedEncodingException est jeté assez souvent en raison de diverses chaînes de codage inconnus (tels que "ISO8859_10", "ISO-8859-10"), et la chose étrange est que cela se fait entièrement dans le code de résine et Grails. C'est -. Pas de code personnalisé est impliqué lorsque l'exception est levée

Je ne sais pas si elle est Grails ou le code du conteneur de servlet qui doit gérer l'exception. Mais je suppose que l'exception devrait être traitée quelque part et pas bouillonner tout le chemin à stderr.

Ceci est l'exception en pleine:

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)

Mes questions:

  • doit l'exception être gérée? Si oui, est-il la responsabilité du conteneur de servlets (résine) ou le framework web (Grails)?
  • Comment iriez-vous de résoudre cela? (Je préfère ne pas avoir le journal des exceptions encombrées avec des exceptions que je peux faire rien.)
Était-ce utile?

La solution

Je ne sais pas beaucoup sur Grails, mais vous pourriez peut-être essayer de savoir où cette étrange provient de l'encodage.

Faites vos demandes envoyer accept-charset têtes? Est-ce que les choses fonctionnent mieux si vous définissez la propriété système « file.encoding » à quelque chose de significatif comme UTF-8 dans votre resin.conf?

Autres conseils

Vous pouvez également configurer un grain de localeResolver dans votre contexte d'application. Le DispatcherServlet utilisera que pour résoudre les paramètres régionaux. Je ne l'ai pas essayé moi-même, mais ma suggestion est d'utiliser la org.springframework.web.servlet.i18n.FixedLocaleResolver. Il déléguera à Locale.getDefault() si vous n'avez pas mis en place.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top