代码之家  ›  专栏  ›  技术社区  ›  nightingale2k1

无法初始化代理-没有会话

  •  0
  • nightingale2k1  · 技术社区  · 14 年前

    你好,

    我使用的是Grails1.2.1,当我运行我的应用程序时,总是会收到这个消息,并且让它没有任何人使用这些应用程序。

    org.hibernate.lazyinitializationException:无法初始化代理-没有会话

    at H__project_ilinkdev_grails_app_views_layouts_main_gsp$_run_closure2.doCall(H__project_ilinkdev_grails_app_views_layouts_main_gsp:220)
    
    at H__project_ilinkdev_grails_app_views_layouts_main_gsp$_run_closure2.doCall(H__project_ilinkdev_grails_app_views_layouts_main_gsp)
    
    at H__project_ilinkdev_grails_app_views_layouts_main_gsp.run(H__project_ilinkdev_grails_app_views_layouts_main_gsp:259)
    
    at org.jsecurity.web.servlet.JSecurityFilter.doFilterInternal(JSecurityFilter.java:382)
    
    at org.jsecurity.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:180)
    
    at java.lang.Thread.run(Thread.java:619)
    

    在我看来,我已经加载了一个类菜单:

    /**
    

    菜单域 规则:一个控制器对应一个菜单 * */ 类菜单{ 字符串menuname=“”; 字符串menucontroller=“”; 字符串menuAction=“”; 整数menuorder=1; string menuclass='';//html类 整数myid=0;

    boolean isUser = false; // is this user menu (user only menu) 
    boolean isAdmin = false; // is this administrator menu 
    boolean isHorizontal =false; // is this horizontal or vertical (if false)
    String menuType='all'; // pia, dam, da, br, all  
    Menu parentMenu;
    
    static hasMany = [childMenu:Menu] ;
    static belongsTo = [parentMenu:Menu];
    
    static constraints = {
        menuName(blank:false, nullable:false);
        menuOrder(blank:false, nullable:false);
        menuController(blank:true,nullable:false); // blank/nullable if there is no controller
        menuAction(blank:true,nullable:false); // blank/nullable if there is no controller
        menuClass(blank:true,nullable:false); // css class ... blank : using default menu
        parentMenu(blank:true, nullable:true);
        childMenu(blank:true, nullable:true);
    }
    
    String toString(){
        "${menuName}";
    }
    

    }

    在布局/main.gsp中 我有这个代码:

                    <%
                def currMenu = Menu.findByMenuController(params.controller);
                %>
                <g:if test="${currMenu}">
                <g:if test="${currMenu.isHorizontal}">
                <g:each in="${Menu.findAllByParentMenu(currMenu,[sort:'menuOrder',order:'asc'])}" status='x' var='submenu'>
                <li class='${submenu.menuClass} <% 
                if(submenu.menuController == params.controller){
                    // dont hi-light on sign out 
                    if(params.controller.equals("auth")){
                    }else{
                        out << "selected";
                    }
                }
                %>'> 
                        <g:if test="${!submenu.menuController.equals('')}">
                            <g:link controller='${submenu?.menuController}' action='${submenu?.menuAction}'>
                                ${submenu?.menuName} 
                            </g:link>
                        </g:if>
                        <g:else>
                                ${submenu?.menuName} 
                        </g:else>
                    </li>
                </g:each>
                </g:if>
                <g:else>
                <%
                // get who is the parent 
                def parentMenu = currMenu.parentMenu ;
                %> 
                <g:each in="${Menu.findAllByParentMenu(parentMenu,[sort:'menuOrder',order:'asc'])}" status='x' var='submenu'>
                <li class='${submenu.menuClass} <% 
                if(submenu.menuController == params.controller){
                    // dont hi-light on sign out 
                    if(params.controller.equals("auth")){
                    }else{
                        out << "selected";
                    }
                }
                %>'> 
                    <g:if test="${!submenu.menuController.equals('')}">
                        <g:link controller='${submenu?.menuController}' action='${submenu?.menuAction}'>
                            ${submenu?.menuName} 
                        </g:link>
                    </g:if>
                    <g:else>
                            ${submenu?.menuName} 
                    </g:else>
                </li>
                </g:each>
                </g:else>
                </g:if>
            </ul>
            </g:if>
    

    如何修复此错误?我可以重新启动Grails,它正常工作。但我只是好奇如何解决这个问题

    1 回复  |  直到 14 年前
        1
  •  1
  •   fabien7474 Jan Tchärmän    14 年前

    当应用程序每隔几个小时不活动就中断时,您的错误似乎与陈旧的连接有关。

    http://sacharya.com/grails-dbcp-stale-connections/ 关于这个问题的描述和解决方法。

    Fabien。