【问题标题】:How to put object in ThreadLocal in Struts 2?如何在 Struts 2 中将对象放入 ThreadLocal 中?
【发布时间】:2013-02-05 19:34:26
【问题描述】:

我正在尝试在每个请求上打开 Hibernate Session 并在最后关闭它。

This 似乎可以工作,但我现在知道我应该如何将我的 Session 对象放入 ThreadLocal 并且答案没有解释这一点。

是否有任何 Struts2 特定的方法可以做到这一点?

【问题讨论】:

  • Spring 可以为你管理 Hibernate 会话。寻找 Spring OpenSessionInViewFilter。

标签: java hibernate


【解决方案1】:

您可以在 Struts2 Servlet 前面添加一个 HttpFilter。在过滤器中:

public class SessionProviderFilter implements Filter {
    private static ThreadLocal<Session> sessionStore = new ThreadLocal<Session>();


    public void doFilter(...) {
        Session session = ... // get the session
        sessionStore.set(session);
        chain.doFilter(...);
        sessionStore.set(null);
   }

   public static Session getCurrentSession() {
        return sessionStore.get();
   }
}

现在从任何代码中,要获取当前的休眠会话,您可以调用 SessionProviderFilter.getCurrentSession()。

【讨论】:

    猜你喜欢
    • 2013-12-31
    • 2013-11-17
    • 2014-08-02
    • 2014-01-21
    • 2016-06-11
    • 1970-01-01
    • 2017-02-03
    • 2017-05-20
    相关资源
    最近更新 更多