2016-08-01 5 views
4

Я работаю над проектом Spring Boot (v1.3.3.RELEASE). Включенная версия Tomcat Embedded - 8.0.32.Ошибка при запуске Tomcat

Я получаю эту ошибку:

2016-08-01 14:51:23.354 ERROR 6704 --- [ost-startStop-1] o.a.catalina.session.StandardManager  : Exception loading sessions from persistent storage 

java.io.EOFException: null 
    at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2335) 
    ... 

Я читал об одной и той же ошибки по этому вопросу: exception loading sessions from persistent storage, но я не могу найти решение моей проблемы.

Я попытался применить решения, предлагаемые в aswers, но в моем случае я не могу найти способ «Очистить каталог работы Tomcat» или просто выполнить чистое развертывание моего приложения.

Как я могу это решить? Где я могу найти рабочую папку для Tomcat Embedded версия?

Примечание Я использую Eclipse в качестве IDE

+0

ошибка ясно указывает, что во время перезагрузки или закрытия вашего приложения Spring некоторые файлы были повреждены. в случае, если вы хотите использовать постоянный сеанс, вам необходимо правильно настроить его с помощью Persistent Manager, упомянутого в этой [link] (https://tomcat.apache.org/tomcat-5.5-doc/config/manager.html) (для tomcat 5.5), в противном случае решение должно полностью отключить его с помощью этого [ответа] (http://stackoverflow.com/questions/27130157/how-to-disable-tomact-session-persistence-in-spring-boot- via-manager-pathname) – AntJavaDev

ответ

6

я наконец нашел решение моей проблемы.

Чтение Anwer на этот вопрос: How to disable Tomact session persistence in Spring Boot via Manager pathname? (предложенный AntJavaDev) Я настроил этот компонент:

@Bean 
public EmbeddedServletContainerFactory servletContainer() { 
    TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory(); 
    tomcat.addContextCustomizers(new TomcatContextCustomizer() { 

     @Override 
     public void customize(Context context) { 
      if (context.getManager() instanceof StandardManager) { 
       // print local path name 
       System.out.println(((StandardManager) context.getManager()).getPathname()); 
      } 
     } 
    }); 
    return tomcat; 
} 

Таким образом, я обнаружил, где кэшированные сессии хранятся на сервере Tomcat Embedded (на Windows):

C:\Users\<my-user>\AppData\Local\Temp\<random-id>\servlet-sessions\ 

Я удалил файл SESSIONS.ser в этой папке, и ошибка была магически исчезла.

+0

рад, что это помогло :), но все-таки вы поняли, почему это произошло с первого места? вы убивали приложение весенней загрузки вручную? не позволяя контексту закрыться должным образом? – AntJavaDev

+0

@AntJavaDev Да, вероятно, проблема была вызвана неправильной остановкой приложения. Большое спасибо! – davioooh

+0

Правильное имя файла - «session.ser» вместо «session.ser». Это сработало для меня. Благодарю. – d9daniel

Смежные вопросы