2010-07-10 5 views
0

У меня есть веб-приложение (с использованием Hibernate, и я не могу избежать этого, потому что это одна из точек экзаменационного теста) для университетского проекта, в котором я нужна функция входа в систему.bean userList не найден в пределах области действия, после некоторого тестирования функции входа в систему с помощью Jmeter

После того, как я запустил некоторый тест с Jmeter (basicaly http get e post в логине), я обнаружил, что после 20 тестов webapp перестает работать, возвращая это сообщение: bean userList не найден в пределах видимости Basicaly Мне нужно перезапустить Mysql, чтобы сделать приложение снова работает.

Это код функциональности входа:

<jsp:root version="2.0" xmlns:jsp="http://java.sun.com/JSP/Page" 
xmlns:c="urn:jsptld:http://java.sun.com/jsp/jstl/core"> 
<jsp:directive.page contentType="text/html; charset=UTF-8" /> 
<jsp:scriptlet> 
    session.setAttribute("userList", com.ggm.hibernateConnection.DAO.getData()); 
</jsp:scriptlet> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title>Login Page</title> 
</head> 
<body background="sfondo_jsp2.jpg" text="white" link="white" vlink="yellow"> 
<div align =" center"> 
<br></br> 
<br></br> 
<h1> Benvenuto in Ggm Web Application! </h1> 
<br></br> 
<br></br> 
<br></br> 
<jsp:useBean id="actualUser" class ="com.ggm.javaBean.LoginBean" scope="session"> </jsp:useBean> 
<form name="form1" method="POST"> 
Username<input type="text" name ="loginUser"></input> 
<br></br> 
Password<input type="password" name ="loginPassword"></input> 
<br></br> 
<input type = "submit" value = "Login"></input> 
<jsp:setProperty name="actualUser" property="loginUser"></jsp:setProperty> 
<jsp:setProperty name="actualUser" property="loginPassword"></jsp:setProperty> 
</form> 
Non sei Registrato? Clicca <a href ="registeruser.jsp">QUI</a> per registrarti! 
<jsp:useBean id="userList" scope="session" type="java.util.List"> </jsp:useBean> 
<c:forEach items="${userList}" var="UserTable"> 
<jsp:setProperty name="actualUser" property="databaseUser" value="${UserTable.userName}"></jsp:setProperty> 
<jsp:setProperty name="actualUser" property="databasePassword" value="${UserTable.password}"></jsp:setProperty> 
<c:if test="${actualUser.login}"> 
    <jsp:directive.page import="javax.servlet.http.Cookie"></jsp:directive.page> 
<jsp:setProperty name ="actualUser" property ="loginUser" value ="null"></jsp:setProperty> 
<c:set var="authorization" value="${true}" scope="session" ></c:set> 
<a href = "poi.jsp">Ciao! sei loggato ora! Clicca qui per andare alla pagina di Inserimento POI</a> 
<c:redirect url="poi.jsp"></c:redirect> 
</c:if> 
</c:forEach> 
</div> 
</body>  
</html> 
</jsp:root> 

И это дао CLAS для доступа к базе данных (через Hibernate)

package com.ggm.hibernateConnection; 
import org.hibernate.Session; 
import org.hibernate.SessionFactory; 
import org.hibernate.cfg.Configuration; 
import org.hibernate.*; 
import java.util.*; 

public class DAO 
{ 
    public static List<?> getData() 
    { 
     SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); 
     Session session = sessionFactory.getCurrentSession(); 
     List<?> result = null; 
     try 
     { 
      session.beginTransaction(); 
      Query query = session.createQuery("from Users"); 
      result = query.list(); 
      session.getTransaction().commit(); 
      query.setReadOnly(true); 
      query.setMaxResults(50); 
      session.flush(); 
      session.close(); 
     } 
     catch (Exception e) 
     { 
      e.printStackTrace(); 
     } 
     return result;  
    } 

} 

PS: извините за мой плохой схоластических Английский.

ответ

2

Строительство фабрики сеансов не должно происходить по каждому запросу. Сеанс-фабрика является для каждого приложения, поэтому его можно построить (настроить) только один раз и повторно использовать. see here

+0

Спасибо, я взгляну на код и вставлю душевное отношение к своей проблеме. Возможно, завтра! Мне нужно немного сна XD –