2010年06月13日

Weld-1.0.1-Finalを入れ替えたときに文字化け

前の記事でWeld-1.0.1-Finalの修正版を入れたんだけど、
なんか日本語が文字化けするようになった(・x・

ConversationScopedの開始タイミングが変わったことが原因にありそう。
Filter通る前に、getParameterが呼ばれるので、Tomcatだと、ASCIIな感じでリクエストが解析されちゃうみたい。
というわけで、org.jboss.weld.servlet.ServletLifecycleを書き換える。

  private void restoreConversationContext(HttpServletRequest request)
  {
    // ここから追加
    String enc = request.getCharacterEncoding();
    if(enc == null) {
      try {
        request.setCharacterEncoding("UTF-8");
      } catch(java.io.UnsupportedEncodingException ex) {
      }
    }
    // ここまで追加
    // FIXME: HC "cid"
    conversationManager(request.getSession().getServletContext()).setupConversation(request.getParameter("cid"));
  }
これでおっけーかな(゚ー゚)(。_。)(゚-゚)(。_。)ウンウン
posted by すふぃあ at 21:46| Comment(0) | TrackBack(0) | 雁字

2010年06月05日

Weldの1.0.1-Finalでの問題?

Weld結構コンパクトでおもしろいけど、ちょっと激しいところもあるかんじ。
1.0.1-Finalでわたしが引っかかったところを紹介(゜▽、゜

1.リクエスト待機時間が0ですぐエラーになっちゃう

AbstractConversationManagerの
@ConversationConcurrentAccessTimeout private long concurrentAccessTimeout;

ってところに@Injectが無くて値が0のままとか。
これだと、連続できたリクエストの待機時間が0になってすぐエラーになっちゃう。

2.ConversationでContextNotActiveExceptionが多発

ConversationImplのtoStringでContextにアクセスしちゃうので落ちてた。
スタックトレースにtoString()とか載ってくるおもしろいケースだったよ。

1と2はどっちももう修正版上がってるみたいね。
で、とっておきのが

3.なんかメモリリークする

なんか、DependentなスコープのにInterceptorをくっつけると、
Javassist周りとの関係?でメモリリークするのね。
RequestScopedにして良ければそれでいいんだけど……。

たぶん、WELD-483あたりの問題がそれかな。
04/20あたりで解決してるみたいね。

というわけで、1.0.2-SNAPSHOTをビルド6400で作ってみた。
メモリリークが無くなって快適快適(゚ー゚)(。_。)(゚-゚)(。_。)ウンウン

Weldの開発者の方たちは結構活発な感じがするなーいいなー(゜▽、゜
posted by すふぃあ at 17:40| Comment(0) | TrackBack(0) | 雁字