From [E-MAIL ADDRESS DELETED] Sun Dec 8 23:43:19 2013 From: [E-MAIL ADDRESS DELETED] (=?ISO-2022-JP?B?GyRCJE8kQyQ3JCMbKEI=?=) Date: Sun, 8 Dec 2013 23:43:19 +0900 Subject: [cubby-user:231] Re: =?iso-2022-jp?b?VG9tY2F0NyAbJEIkRxsoQiBDdWJieSAbJEIkRzpuGyhC?= =?iso-2022-jp?b?GyRCQC4kNyQ/GyhCV2ViGyRCJSIlVyVqJTEhPCU3JWcbKEI=?= =?iso-2022-jp?b?GyRCJXMkckRkO18kNyQ/Ol0kSyVhJWIlaiE8JWohPCUvGyhC?= =?iso-2022-jp?b?GyRCJE4lbSUwJCw9UE5PJDUkbCRrJE4kcjJzSHIkNyQ/GyhC?= =?iso-2022-jp?b?GyRCJCQbKEI=?= In-Reply-To: References: Message-ID: 馬場様 早々のご返信にもかかわらず、お礼が遅れ申し訳ございません。 ご教授いただきました方法にて、本件の課題をクリアすることができました! ありがとうございました。 とても助かりました。 今後ともよろしくお願いいたします。 2013年11月27日 12:34 Yasuyuki BABA : > こんにちは、馬場です。 > > 以下のような 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 PREVIOUS = getPrevious(); > > private static ThreadLocal getPrevious() { > Field field = ClassUtil.getDeclaredField(ThreadContext.class, > "PREVIOUS"); > field.setAccessible(true); > @SuppressWarnings("unchecked") > ThreadLocal tl = (ThreadLocal) > 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 はっしぃ : > > お世話になります。はっしぃと申します。 > > > > 表題のとおり、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 mailing list > cubby-user @ ml.seasar.org > https://ml.seasar.org/mailman/listinfo/cubby-user > -------------- next part -------------- HTMLの添付ファイルを保管しました... URL: