有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在Rest层中获得会话并避免LazyInitialization异常?

f得到了我的应用层,它基本上与spring+jsf(2.0)和primeFaces(3.5)+hibernate(4.3.5)一起工作。现在我们必须采用一种新的方式来访问spring和jsf之外的DAO,我们已经创建了一个Rest路径。问题是:当我使用浏览器访问我的应用程序并首先登录时,一切都正常工作,包括对DAO的其余访问。问题是当我尝试在没有登录的情况下访问其余部分时。我试图制作一个过滤器,截取通过/rest/*路径的任何内容,我在其中写道:

@Override
  public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
      throws IOException, ServletException {
    HttpServletRequest req = (HttpServletRequest)arg0;
    HttpSession session = req.getSession(true);
    HttpSession session2 = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(true);
    arg2.doFilter(arg0, arg1);
  }

但它不起作用,因为我得到的第一个会话不是我想要的会话(它在JSF上下文之外),而第一次尝试从FacesContext获得会话时给了我错误,因为我在JSF循环之外,JSF循环从我调用*开始。jsf。。。问题是,我不能用电话通知我的休息时间。最后是jsp,如果没有会话,我无法在DAO中获得所需的数据。有办法绕过这个问题吗


共 (1) 个答案

  1. # 1 楼答案

    我找到了一个使用@Transactional注释的解决方案。谢谢