[cubby-user:230] Re: Tomcat7 で Cubby で作成したWebアプリケーションを停止した際にメモリーリークのログが出力されるのを回避したい
Yasuyuki BABA
[E-MAIL ADDRESS DELETED]
2013年 11月 27日 (水) 12:34:23 JST
こんにちは、馬場です。
以下のような ThreadContext をクリアするリスナを登録することで解消すると思います。
プラグインだとフォワードするときにうまく動かないかもしれないです。
ちょっとワークアラウンド的な方法なのと、きちんと検証できていないので申し訳ありません。
お試しいただければと思います。
---------------
import java.lang.reflect.Field;
import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
import org.seasar.cubby.internal.controller.ThreadContext;
import org.seasar.framework.util.ClassUtil;
import org.seasar.framework.util.FieldUtil;
public class ThreadContextListener implements ServletRequestListener {
private static ThreadLocal<ThreadContext> PREVIOUS = getPrevious();
private static ThreadLocal<ThreadContext> getPrevious() {
Field field = ClassUtil.getDeclaredField(ThreadContext.class,
"PREVIOUS");
field.setAccessible(true);
@SuppressWarnings("unchecked")
ThreadLocal<ThreadContext> tl = (ThreadLocal<ThreadContext>)
FieldUtil.get(field, null);
return tl;
}
public void requestInitialized(ServletRequestEvent sre) {
}
public void requestDestroyed(ServletRequestEvent sre) {
ThreadContext.remove();
PREVIOUS.remove();
}
}
---------------
2013年11月26日 21:21 はっしぃ <hasuie @ gmail.com>:
> お世話になります。はっしぃと申します。
>
> 表題のとおり、Tomcat7 停止時に以下のようなスレッドローカルのメモリリークエラーがログ出力されるのを回避したいのですが、何か手はないでしょうか?
>
> 重大: A web application created a ThreadLocal with key of type
> [java.lang.ThreadLocal] (value [java.lang.ThreadLocal @ 543e51ed]) and a value
> of type [org.seasar.cubby.internal.controller.ThreadContext] (value
> [org.seasar.cubby.internal.controller.ThreadContext @ 3605435c]) but failed to
> remove it when
> the web application was stopped. To prevent a memory leak, the ThreadLocal
> has been forcibly removed.
>
> 自前で使用しているThreadLocal変数は、AbstractPlugin#invokeActionResult
> にて、クリアしていますが、フレームワークの ThreadContext
> のクリア等がアプリケーション側で可能であれば、ご教授していただけると、こちらで対応可能なのですが・・・。
>
> 以上よろしくお願いいたします。
>
> _______________________________________________
> cubby-user mailing list
> cubby-user @ ml.seasar.org
> https://ml.seasar.org/mailman/listinfo/cubby-user
>
--
BABA,Yasuyuki
yasuyuki.baba @ gmail.com
cubby-user メーリングリストの案内