2014-09-11 6 views
2

Я пытаюсь решить эту проблему. Я использую NetBeans 8.0 и TomCat 8.0.9, когда сервер запуска выдает это NSE:NotSerializableException при запуске Tomcat

11-Sep-2014 00:01:43.578 WARNING [http-apr-8080-exec-191] org.apache.catalina.session.StandardSession.doWriteObject No puedo serializar atributo de sesión com.sun.faces.application.view.activeViewMaps para sesión 9AA3A199643F6FDA808F5269DDF0EA86 
java.io.NotSerializableException: model.Estado_civil 
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184) 
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348) 
at java.util.ArrayList.writeObject(ArrayList.java:762) 
at sun.reflect.GeneratedMethodAccessor151.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:483) 
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:988) 
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1496) 
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) 
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) 
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548) 
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509) 
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) 
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) 
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348) 
at java.util.HashMap.internalWriteEntries(HashMap.java:1777) 
at java.util.HashMap.writeObject(HashMap.java:1354) 
at sun.reflect.GeneratedMethodAccessor239.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:483) 
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:988) 
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1496) 
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) 
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) 
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348) 
at java.util.LinkedHashMap.internalWriteEntries(LinkedHashMap.java:333) 
at java.util.HashMap.writeObject(HashMap.java:1354) 
at sun.reflect.GeneratedMethodAccessor239.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:483) 
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:988) 
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1496) 
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) 
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) 
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548) 
at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:441) 
at java.util.Collections$SynchronizedMap.writeObject(Collections.java:2691) 
at sun.reflect.GeneratedMethodAccessor1935.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:483) 
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:988) 
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1496) 
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) 
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) 
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348) 
at org.apache.catalina.session.StandardSession.doWriteObject(StandardSession.java:1710) 
at org.apache.catalina.session.StandardSession.writeObjectData(StandardSession.java:1116) 
at org.apache.catalina.session.StandardManager.doUnload(StandardManager.java:401) 
at org.apache.catalina.session.StandardManager.unload(StandardManager.java:320) 
at org.apache.catalina.session.StandardManager.stopInternal(StandardManager.java:487) 
at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232) 
at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5397) 
at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232) 
at org.apache.catalina.core.StandardContext.reload(StandardContext.java:3773) 
at org.apache.catalina.manager.ManagerServlet.reload(ManagerServlet.java:984) 
at org.apache.catalina.manager.ManagerServlet.doGet(ManagerServlet.java:345) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:618) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:725) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
at org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) 
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:615) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:136) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:526) 
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1078) 
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:655) 
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:277) 
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2381) 
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2370) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
at java.lang.Thread.run(Thread.java:745) 

model.Estado_civil является POJO и не ссылается. Я удаляю каждый код, который мог бы вызвать это POJO. Я использую пустой Bean и пустой XHTML. Я не развернул проект с сервера, используя netbeans, и очистил и снова построил проект. Я не могу понять, почему это исключение.

ответ

3

Вы сохраняете Object, которая не implement Serializable в HttpSession:

... 
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348) 
at org.apache.catalina.session.StandardSession.doWriteObject(StandardSession.java:1710) 
... 

Когда Tomcat выключается он пытается сохранить состояние сеанса в файл с помощью API Java сериализации. Когда он запускается снова, он пытается восстановить состояние сеанса.

От имени метода - doWriteObject - Я бы сказал, что он пытается сделать магазин что-то настойчиво.

Для того, чтобы отключить эту функцию полностью вам нужно добавить:

<Manager pathname="" /> 

К вашему context.xml. context.xml расположен в /META-INF/context.xml и будет выглядеть примерно так:

<Context> 
    <Manager pathname="" /> 
</Context> 

Для получения дополнительной информации обратитесь к Tomcat documentation

+0

Спасибо большое! Теперь работает, эта проблема появляется и исчезает с нескольких дней. Я не очень хорошо знаю английский язык, но я учусь тем временем, что могу спросить, влияет ли это на работу приложения? PS: Я недавно веб-программирование на Java, поэтому я не езжу, хотя проблема использования ресурсов, только режим макросъемки. –

+0

Отключение постоянного хранилища сеансов изменяет поведение Tomcat. Говоря простыми словами, когда я вхожу в ваше приложение и устанавливаю сеанс, а посреди чего-то, вы решаете перезапустить Tomcat. Независимо от того, будет ли моя сессия резервной копией Tomcat или нет, она контролируется этим конкретным параметром. Подробное техническое описание см. В документации, приведенной Борисом. – prabugp

+0

ou Я вижу, спасибо @prabugp –

1

Похоже, вы используете Estado_civil (не очень хорошее имя, кстати) в вашем сеансе и не использует Serializable. Проверьте описание атрибута pathnamehere, чтобы узнать, сохраняет ли ваш Tomcat сеансы через перезагрузки. Если это так, вы можете очистить их перед перезагрузкой (во время разработки).

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