[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 メーリングリストの案内