Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Умирает HttpSession


Автор: gema 30.8.2011, 04:30
Через некоторое время при работе с проектом (java+Tomcat) умирает сессия и выходит запрос пользователя.
web.xml
Код

<session-config>
       <session-timeout>60</session-timeout>
 </session-config>

В чем может быть причина?

Автор: Nofate 30.8.2011, 09:41
То есть у вас сессия закрывается раньше чем через указанные 60 минут?

Автор: gema 30.8.2011, 10:01
Именно так.Даже при работе,без простоя может появится запрос пользователя и начинается новая сессия.

Автор: priam220 30.8.2011, 10:14
Возможно, в процессе изучения томката были дернуты еще какие то настройки, типа время жизни сессии.. smile
Код

    <Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" />

вот здесь например

Автор: gema 30.8.2011, 11:15
Нет, параметры в server.xml такие.
Может context.xml неправильно настроен
Код

<Context antiJARLocking="true" debug="5" reloadable="true" crossContext="true"
         path="/plo">
    <Resource auth="Container" driverClassName="com.mysql.jdbc.Driver" maxActive="100"
             maxIdle="30"
             maxWait="10"
             name="jdbc/mysql"
             password="..."
             username=".."
             type="javax.sql.DataSource"
             url="jdbc:mysql://localhost:3306/plo?characterEncoding=utf-8"
             autoReconnect="true"
             autoReconnectForPools="true"
             defaultAutoCommit="true"
             testOnBorrow="true"
             testWhileIdle="true"
             timeBeatweenEvictionRunsMillis="10000"
             minEvictableIdleTimeMillis="60000"
             validationQuery="Select 1 from dual"/>
               

</Context>

Автор: jk1 30.8.2011, 13:00
Посмотрите по коду, наверняка где-то по ошибке дергается

Код

 session.invalidate()

Автор: gema 31.8.2011, 12:14
Вообще убрала эту строчку session.invalidate(),не помогло.
Сделала HttpSessionListener.
Код

package spr;

import javax.servlet.http.HttpSessionListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSession;

public class Listener  implements HttpSessionListener {
 

    public void sessionCreated(HttpSessionEvent se) {

        HttpSession session = se.getSession();

        ServletContext ctx = session.getServletContext();

        ctx.log("Session with id = " + session.getId() + " is started");

    }

    public void sessionDestroyed(HttpSessionEvent se) {

        HttpSession session = se.getSession();

        ServletContext ctx = session.getServletContext();

        ctx.log("Session with id = " + session.getId() + " is finished");

    }

    }

В logs вижу:
31.08.2011 10:32:40 org.apache.catalina.core.ApplicationContext log
INFO: Session with id = 6FD6E60D308CA1A7C88D737CFF825FF8 is started
31.08.2011 10:32:44 org.apache.catalina.core.ApplicationContext log
INFO: Session with id = 83D5A27F035548F6857B06E8D8ABC5B5 is started
31.08.2011 12:01:32 org.apache.catalina.core.ApplicationContext log
INFO: Session with id = 2F5EA3DBDCB1FEC448B27186DB47518C is started
То сессия новая стартует,но старая получается не завершается???

Автор: mbasil 3.9.2011, 12:14
А может ваши пользователи отключают куки, а переопределение URL не на всех ссылках прописано. Можно проверить - разрыв сеанса происходит не на одном и том же пути?

Автор: gema 5.9.2011, 04:26
Я догадалась в чем причина моей проблемы.Я работаю в NetBeans.Когда стартую свой проект и он запускается в браузере и т.д.А потом я вношу какие-то изменения в код и проект заново не стартую,а просто обновляю в необходимую страницу в браузере (F5).Это видимо и ведет к появлению новой сессии!!!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)