Domanda

ho incontrato uno strano problema in una webapp Grails Grails esecuzione sotto:

java.io.UnsupportedEncodingException è gettato abbastanza frequentemente a causa di varie stringhe di codifica sconosciuti (come "ISO8859_10", "ISO-8859-10"), e la cosa strana è che questo è fatto interamente all'interno del codice di resina e Grails. Che è -. Nessun codice personalizzato è coinvolto quando viene generata l'eccezione

Non sono sicuro se è Grails o il codice del servlet container che dovrebbe gestire l'eccezione. Ma mi piacerebbe pensare che l'eccezione deve essere maneggiato da qualche parte e non bolla tutta la strada per stderr.

Questa è l'eccezione in piena:

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)

Le mie domande:

  • Qualora tale deroga essere gestita? Se è così, è la responsabilità del servlet container (Resina) oppure il framework web (Grails)?
  • Come si va sulla risoluzione di questo? (Preferirei non avere il registro eccezione ingombra con le eccezioni che posso fare nulla.)
È stato utile?

Soluzione

Non so molto di Grails, ma forse si potrebbe cercare di scoprire dove questa codifica strano proviene.

Fate le vostre richieste inviare accept-charset intestazioni? Fare le cose funzionano meglio se si imposta la proprietà di sistema "file.encoding" per qualcosa di significativo, come UTF-8 nel vostro resin.conf?

Altri suggerimenti

È possibile anche impostare un fagiolo localeResolver nel contesto di applicazione. Il DispatcherServlet userà che per risolvere il locale. Non ho provato io stesso, ma il mio suggerimento è quello di utilizzare il org.springframework.web.servlet.i18n.FixedLocaleResolver. Sarà delegare ad Locale.getDefault() se non si dispone di alcun set up.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top