2012-03-01 3 views
1

В моем управляемом BI, если я изменю свою область действия с @RequestScoped на , я получаю следующий стек ошибок. Как я могу это решить? Я мог видеть результаты на странице, когда я запускаю свое приложение.Ошибка StandardWrapperValve [Faces Servlet]: PWC1406: Servlet.service() для сервлета Лица Servlet выбрасывает исключение

Я бегу на GlassFish 3 с Mojarra 2.1.3 (FCS B02)

С уважением

WARNING: StandardWrapperValve[Faces Servlet]: 
PWC1406: Servlet.service() for servlet Faces Servlet threw exception 
    java.io.NotSerializableException: bean 
     at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1164) 
     at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:330) 
     at java.util.ArrayList.writeObject(ArrayList.java:570) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
     at java.lang.reflect.Method.invoke(Method.java:597) 
     at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945) 
     at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1469) 
     at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400) 
     at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158) 
     at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518) 
     at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483) 
     at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400) 
     at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158) 
     at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:330) 
     at java.util.HashMap.writeObject(HashMap.java:1001) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
     at java.lang.reflect.Method.invoke(Method.java:597) 
     at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945) 
     at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1469) 
     at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400) 
     at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158) 
     at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518) 
     at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483) 
     at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400) 
     at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158) 
     at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1346) 
     at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1154) 
     at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:330) 
     at java.util.HashMap.writeObject(HashMap.java:1001) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
     at java.lang.reflect.Method.invoke(Method.java:597) 
     at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945) 
     at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1469) 
     at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400) 
     at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158) 
     at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:330) 
     at com.sun.faces.renderkit.ClientSideStateHelper.doWriteState(ClientSideStateHelper.java:325) 
     at com.sun.faces.renderkit.ClientSideStateHelper.writeState(ClientSideStateHelper.java:173) 
     at com.sun.faces.renderkit.ResponseStateManagerImpl.writeState(ResponseStateManagerImpl.java:122) 
     at com.sun.faces.application.StateManagerImpl.writeState(StateManagerImpl.java:166) 
     at com.sun.faces.application.view.WriteBehindStateWriter.flushToWriter(WriteBehindStateWriter.java:225) 
     at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:418) 
     at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131) 
     at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121) 
     at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) 
     at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) 
     at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594) 
     at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1539) 
     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281) 
     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) 
     at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655) 
     at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595) 
     at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98) 
     at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91) 
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162) 
     at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:330) 
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231) 
     at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:174) 
     at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:828) 
     at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:725) 
     at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1019) 
     at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225) 
     at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137) 
     at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104) 
     at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90) 
     at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79) 
     at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) 
     at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59) 
     at com.sun.grizzly.ContextTask.run(ContextTask.java:71) 
     at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532) 
     at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) 
     at java.lang.Thread.run(Thread.java:662) 

Update 1

public class SchedulesBean implements Serializable { 

    Logger logger = Logger.getLogger(this.getClass().getName().toString()); 
    CommonMethods commonMethods = new CommonMethods(); 
    private ScheduleDAO scheduleDAO = DatabaseConnection 
      .getInstance(commonMethods.getDSName()).geScheduleDAO(); 
    List<Schedule> beanValues = new ArrayList<Schedule>(); 
    private Schedule schedule; 

    private Schedule selectedRow = new Schedule(); 

    public SchedulesBean() { 

     this.getSchedules();     
    } 

    public Schedule getSchedule() { 
     return schedule; 
    } 

    public void setSchedule(Schedule schedule) { 
     this.schedule = schedule; 
    } 

    public void getSchedules() { 

     try { 
      beanValues = scheduleDAO.loadSchedules(); 

     } catch (Exception e) { 
      // TODO: handle exception 
     } 

    } 

    public void selectedRow(SelectEvent event) { 
     selectedRow = (Schedule) event.getObject(); 
     logger.info("selectedRow "+selectedRow); 
    } 

ответ

1

Пусть ваш боб реализовать java.io.Serializable интерфейс. Проблема решена.

+0

У меня уже есть 'public class bean реализует Serializable {' или я что-то упускаю? – user75ponic

+0

Можете ли вы опубликовать код класса компонента – rags

+0

Добавлен мой компонент в качестве обновления 1 выше. Спасибо – user75ponic

1

Вы также можете попробовать добавить ключевое слово "переходное" для всех несериализуемых свойств.

transient Logger logger = Logger.getLogger(... 

transient private ScheduleDAO scheduleDAO 

Другой способ проверить, если фасоль сериализации является применение QA инструмент против вашего кода, как Findbugs (TM) или любых домашних инструментов, чтобы проверить этот аспект вашего кода.

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