우리 서버에 mysql 연결에 문제가 있습니다. 웹 애플리케이션은 올바로 작동하지만 몇 시간이 지나면 mysql과의 연결에서 오류가 발생합니다. 최대 절전 모드 세션에 문제가 있다고 생각합니다. 우리가 아는 한, 최대 절전 모드가 동일한 세션을 사용하려고 시도하는 동안 mysql 연결은 닫힙니다. 아마도 세션을 제대로 닫지 않을 것입니다.최대 절전 모드 연결 시간 초과
우리는 Struts 2와 함께 작업하며 모든 세션 작업을 관리하는 인터셉터를 정의했습니다. 다음은 코드입니다 : 당신이 볼 수 있듯이, 우리는 currentSession를 얻기 위해 노력하고있다
public class OSVStrutsInterceptors implements Interceptor {
private static SessionFactory sf;
@Override
public void destroy() {
try
{
sf.getCurrentSession().close();
}
catch (HibernateException ex)
{
throw new RuntimeException(ex);
}
}
@Override
public void init() {
}
@Override
public String intercept(ActionInvocation ai) throws Exception {
sf = HibernateUtil.getSessionFactory();
Session sesion=sf.getCurrentSession();
try {
sesion.beginTransaction();
}
catch (Exception ex) {
System.out.println(new Date()+" Sesion cerrada. Obtenemos una nueva");
sesion=sf.openSession();
}
String result=ai.invoke();
sesion.getTransaction().commit();
return result;
}
}
하지만 가능하지 않은 경우, 우리는 새로운 세션을 엽니 다. 또한 인터셉터의 destroy() 메소드에 대한 세션을 닫습니다.
그러나 우리는 항상 우리의 서버에서이 오류를 얻을 :
com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception:
** BEGIN NESTED EXCEPTION **
java.net.SocketException
MESSAGE: Broken pipe
STACKTRACE:
java.net.SocketException: Broken pipe