質問

Grails で実行されている Grails Web アプリで奇妙な問題が発生しました。

java.io.UnsupportedEncodingException は、さまざまな不明なエンコード文字列 ( "ISO8859_10", "ISO-8859-10")、そして奇妙なことに、これは完全にResinとGrailsのコード内で行われるということです。つまり、例外がスローされるときにカスタム コードは関与しません。

例外を処理するのが Grails なのかサーブレット コンテナのコー​​ドなのかはわかりません。ただし、例外はどこかで処理されるべきであり、stderr までバブルアップしないようにする必要があると思います。

これは完全に例外です。

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)

私の質問:

  • 例外を処理する必要がありますか?その場合、それはサーブレット コンテナ (Resin) の責任ですか、それとも Web フレームワーク (Grails) の責任ですか?
  • これをどうやって解決しますか?(例外ログが自分ではどうすることもできない例外で乱雑になることは避けたいと考えています。)
役に立ちましたか?

解決

私は Grails についてはあまり知りませんが、この奇妙なエンコーディングがどこから来たのか調べてみてはいかがでしょうか。

リクエストは Accept-Charset ヘッダーを送信しますか?あなたのresin.confで「file.encoding」システムプロパティをUTF-8のような意味のあるものに設定すると、うまく動作しますか?

他のヒント

をセットアップすることもできます localeResolver アプリケーションコンテキスト内のBean。の DispatcherServlet それを使用してロケールを解決します。私自身は試していませんが、私の提案は、 org.springframework.web.servlet.i18n.FixedLocaleResolver. 。に委任されます Locale.getDefault() 何も設定していない場合。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top