Estoy realizando una aplicación con Maven, Spring, Hibernate y JSF, en Netbeans y Tomcat.
Primero trato de que me muestre el contenido de la tabla idiomas, pero... me muestra la tabla vacía y en el log me da el siguiente error:
Advertencia: No puedo serializar atributo de sesión idiomas para sesión 84D59D5970C25016330AFD0328F242D9
java.io.NotSerializableException: model.bo.imp.IdiomasBo
at java.io.ObjectOutputStream.writeObject0(ObjectOutp utStream.java:1180)
at java.io.ObjectOutputStream.defaultWriteFields(Obje ctOutputStream.java:1528)
at java.io.ObjectOutputStream.writeSerialData(ObjectO utputStream.java:1493)
at java.io.ObjectOutputStream.writeOrdinaryObject(Obj ectOutputStream.java:1416)
at java.io.ObjectOutputStream.writeObject0(ObjectOutp utStream.java:1174)
at java.io.ObjectOutputStream.writeObject(ObjectOutpu tStream.java:346)
at org.apache.catalina.session.StandardSession.writeO bject(StandardSession.java:1671)
at org.apache.catalina.session.StandardSession.writeO bjectData(StandardSession.java:1077)
at org.apache.catalina.session.StandardManager.doUnlo ad(StandardManager.java:432)
at org.apache.catalina.session.StandardManager.unload (StandardManager.java:353)
at org.apache.catalina.session.StandardManager.stopIn ternal(StandardManager.java:518)
at org.apache.catalina.util.LifecycleBase.stop(Lifecy cleBase.java:232)
at org.apache.catalina.core.StandardContext.stopInter nal(StandardContext.java:5462)
at org.apache.catalina.util.LifecycleBase.stop(Lifecy cleBase.java:232)
at org.apache.catalina.core.StandardContext.reload(St andardContext.java:3901)
at org.apache.catalina.manager.ManagerServlet.reload( ManagerServlet.java:949)
at org.apache.catalina.manager.ManagerServlet.doGet(M anagerServlet.java:360)
at javax.servlet.http.HttpServlet.service(HttpServlet .java:621)
at javax.servlet.http.HttpServlet.service(HttpServlet .java:722)
at org.apache.catalina.core.ApplicationFilterChain.in ternalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.do Filter(ApplicationFilterChain.java:210)
at org.netbeans.modules.web.monitor.server.MonitorFil ter.doFilter(MonitorFilter.java:393)
at org.apache.catalina.core.ApplicationFilterChain.in ternalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.do Filter(ApplicationFilterChain.java:210)
at org.apache.catalina.filters.SetCharacterEncodingFi lter.doFilter(SetCharacterEncodingFilter.java:108)
at org.apache.catalina.core.ApplicationFilterChain.in ternalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.do Filter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invo ke(StandardWrapperValve.java:225)
at org.apache.catalina.core.StandardContextValve.invo ke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBas e.invoke(AuthenticatorBase.java:581)
at org.apache.catalina.core.StandardHostValve.invoke( StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(A ccessLogValve.java:927)
at org.apache.catalina.core.StandardEngineValve.invok e(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.servic e(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.p rocess(AbstractHttp11Processor.java:999)
at org.apache.coyote.AbstractProtocol$AbstractConnect ionHandler.process(AbstractProtocol.java:565)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProce ssor.run(JIoEndpoint.java:309)
at java.util.concurrent.ThreadPoolExecutor.runWorker( ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
IdiomasBo:
Cita:
IdiomasDao:public class IdiomasBo implements IIdiomasBo {
private IdiomasDao idiomasDao;
public void setIdiomasDao (IdiomasDao idiomasDao) {
this.idiomasDao = idiomasDao;
}
public IdiomasDao getIdiomasDao() {
return idiomasDao;
}
public List<Idiomas> getListaIdiomas() {
return this.idiomasDao.getListaIdiomas();
}
}
private IdiomasDao idiomasDao;
public void setIdiomasDao (IdiomasDao idiomasDao) {
this.idiomasDao = idiomasDao;
}
public IdiomasDao getIdiomasDao() {
return idiomasDao;
}
public List<Idiomas> getListaIdiomas() {
return this.idiomasDao.getListaIdiomas();
}
}
Cita:
idiomasBean.java:public class IdiomasDao extends HibernateDaoSupport implements IIdiomasDao{
//Al finalizar, cerramos la session
protected void finalize() {
HibernateUtil.getSessionFactory().close();
}
public List<Idiomas> getListaIdiomas() {
List<Idiomas> listaIdiomas = new ArrayList<Idiomas>();
Session session = HibernateUtil.getSessionFactory().getCurrentSessio n();
try {
session.beginTransaction();
Criteria criteria = session.createCriteria(Idiomas.class);
listaIdiomas = criteria.list();
session.getTransaction().commit();
} catch (Exception ex) {
Logger.getLogger(IdiomasDao.class.getName()).log(L evel.SEVERE,"Problema al obtener la lista de Idiomas");
session.getTransaction().rollback();
}
return listaIdiomas;
}
}
//Al finalizar, cerramos la session
protected void finalize() {
HibernateUtil.getSessionFactory().close();
}
public List<Idiomas> getListaIdiomas() {
List<Idiomas> listaIdiomas = new ArrayList<Idiomas>();
Session session = HibernateUtil.getSessionFactory().getCurrentSessio n();
try {
session.beginTransaction();
Criteria criteria = session.createCriteria(Idiomas.class);
listaIdiomas = criteria.list();
session.getTransaction().commit();
} catch (Exception ex) {
Logger.getLogger(IdiomasDao.class.getName()).log(L evel.SEVERE,"Problema al obtener la lista de Idiomas");
session.getTransaction().rollback();
}
return listaIdiomas;
}
}
Cita:
index.xhtml:public class IdiomasBean implements Serializable {
//Algunos atributos para la presentación
private List<Idiomas> listaIdiomas;
private HtmlDataTable tablaIdiomas;
private boolean seleccion;
private Integer ididioma;
private String nombre;
private String name;
//DI via Spring
private IdiomasBo idiomasBo;
public void setIdiomasBo (IdiomasBo idiomasBo) {
this.idiomasBo = idiomasBo;
}
public IdiomasBo getIdiomasBo () {
return idiomasBo;
}
public void setTablaIdiomas (HtmlDataTable tablaIdiomas) {
this.tablaIdiomas = tablaIdiomas;
}
public HtmlDataTable getTablaIdiomas () {
return tablaIdiomas;
}
public String getNombre() {
return this.nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public List<Idiomas> getListaIdiomas() {
listaIdiomas = idiomasBo.getListaIdiomas();
return listaIdiomas;
}
public void seleccionLista() {
}
public void limpiarForm() {
this.setNombre("");
this.setName("");
}
}
//Algunos atributos para la presentación
private List<Idiomas> listaIdiomas;
private HtmlDataTable tablaIdiomas;
private boolean seleccion;
private Integer ididioma;
private String nombre;
private String name;
//DI via Spring
private IdiomasBo idiomasBo;
public void setIdiomasBo (IdiomasBo idiomasBo) {
this.idiomasBo = idiomasBo;
}
public IdiomasBo getIdiomasBo () {
return idiomasBo;
}
public void setTablaIdiomas (HtmlDataTable tablaIdiomas) {
this.tablaIdiomas = tablaIdiomas;
}
public HtmlDataTable getTablaIdiomas () {
return tablaIdiomas;
}
public String getNombre() {
return this.nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public List<Idiomas> getListaIdiomas() {
listaIdiomas = idiomasBo.getListaIdiomas();
return listaIdiomas;
}
public void seleccionLista() {
}
public void limpiarForm() {
this.setNombre("");
this.setName("");
}
}
Cita:
<h:form>
<p:dataTable id="table2" value="#{idiomas.listaIdiomas}" var="idiomas" paginator="true" rows="5" dynamic="true" >
<f:facet name="header">
IDIOMAS
</f:facet>
<p:column>
<f:facet name="header">
<h:outputText value="Nombre"/>
</f:facet>
<h:outputText value="#{idiomas.nombre}"/>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Name"/>
</f:facet>
<h:outputText value="#{idiomas.name}"/>
</p:column>
</p:dataTable>
</h:form>
<p:dataTable id="table2" value="#{idiomas.listaIdiomas}" var="idiomas" paginator="true" rows="5" dynamic="true" >
<f:facet name="header">
IDIOMAS
</f:facet>
<p:column>
<f:facet name="header">
<h:outputText value="Nombre"/>
</f:facet>
<h:outputText value="#{idiomas.nombre}"/>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Name"/>
</f:facet>
<h:outputText value="#{idiomas.name}"/>
</p:column>
</p:dataTable>
</h:form>
Alguna idea de cómo solucionarlo??
Muchas gracias!!