Hallo.
Ich habe hier ein komisches Problem und komm nicht weiter. Nutze TomCat 7, JSF2.2, JDK7 und Hibernate 3.6
Ich habe mittlerweile eine kleine Anwendung extra zur Fehlersuche gebaut, hier die wichtigstens Stellen.
Ersteinmal ein helper für die Hibernate GEschcihte - so wie ich es gelernt habe:
Dann eine Bean.
Diese Fehlersuchanwendung hat zwei JSF Seiten die über eigene Beans Daten holen und anzeigen. Via Links springe ich nun von der einen Seite auf die anderen - immer hin und her.
Link auf Seite A
Link auf Seite B
Das holen der session funktioniert soweit einwandfrei bis dann plötzlich die session zu ist - Log File ganz unten. Dabei ist das Ereignis willkürlich mal nach zweimal hin und her, mal nach 10x hin und her.
Hab das Ganze auf zwei separaten Umgebung versucht (Entwicklerrechner mit lokalem Server und Produktivumgebung). Passiert auf beiden, muss also an der Anwendung liegen, ich seh aber leider den Fehler nicht. Google gibt mir nur Ratschläge in Richtung Hibernate Connection, aber das sieht doch alles ok aus, oder?
Ich habe hier ein komisches Problem und komm nicht weiter. Nutze TomCat 7, JSF2.2, JDK7 und Hibernate 3.6
Ich habe mittlerweile eine kleine Anwendung extra zur Fehlersuche gebaut, hier die wichtigstens Stellen.
Ersteinmal ein helper für die Hibernate GEschcihte - so wie ich es gelernt habe:
Code:
public class FileServiceHelper {
final static Logger logger = LogManager.getLogger();
private Session session = null;
public FileServiceHelper () {
logger.entry();
this.session = HibernateUtil.getSessionFactory().getCurrentSession();
logger.info("new Hibernate Session: " + session.isOpen());
}
public List getAllActivatedShare() {
List<Share> shares;
logger.info("Abfrage aller aktiven Shares...");
session.beginTransaction();
Query q = session.createQuery("from Share as s where s.isActive=true order by s.bezeichnung");
shares = (List<Share>)q.list();
logger.info("...done");
return shares;
}
public void updateDb () {
org.hibernate.Transaction tx = session.beginTransaction();
tx.commit();
logger.info("tx.commit");
logger.info("Hibernate Session: " + session.isOpen());
}
public Session getSession() {
return session;
}
public void setSession(Session session) {
this.session = session;
}
}
Dann eine Bean.
Code:
/**
* ManagedBean zur Hauptseite des Admins.
*
* Die Bean ist viewScope. Man beachte das Package ist javax.faces.view nicht javax.faces.bean
*
*/
@Named
//@javax.enterprise.context.SessionScoped
@javax.faces.view.ViewScoped
public class AdminController implements java.io.Serializable {
final Logger logger = LogManager.getLogger();
private final FileServiceHelper helper;
private DataModel shares;
private int share_count;
/**
* Creates a new instance of AdminController
*/
public AdminController () {
logger.entry();
helper = new FileServiceHelper ();
}
public DataModel getShares() {
if (shares == null) {
shares = new ListDataModel (helper.getAllActivatedShare() );
share_count = shares.getRowCount();
logger.info( share_count + " Shares");
}
return shares;
}
@PreDestroy
public void disConnect () {
if ( helper.getSession().isConnected() ) {
helper.updateDb();
}
}
}
Diese Fehlersuchanwendung hat zwei JSF Seiten die über eigene Beans Daten holen und anzeigen. Via Links springe ich nun von der einen Seite auf die anderen - immer hin und her.
Link auf Seite A
Code:
/faces/protected/fileServiceAdmin.xhtml?faces-redirect=true
Link auf Seite B
Code:
/faces/protected/newShareAdmin.xhtml?faces-redirect=true
Das holen der session funktioniert soweit einwandfrei bis dann plötzlich die session zu ist - Log File ganz unten. Dabei ist das Ereignis willkürlich mal nach zweimal hin und her, mal nach 10x hin und her.
Hab das Ganze auf zwei separaten Umgebung versucht (Entwicklerrechner mit lokalem Server und Produktivumgebung). Passiert auf beiden, muss also an der Anwendung liegen, ich seh aber leider den Fehler nicht. Google gibt mir nur Ratschläge in Richtung Hibernate Connection, aber das sieht doch alles ok aus, oder?
Code:
12:09:10 <init> INFO fileservice.FileServiceHelper - new Hibernate Session: true
12:09:10 getAllActivatedShare INFO fileservice.FileServiceHelper - Abfrage aller aktiven Shares...
12:09:10 getAllActivatedShare INFO fileservice.FileServiceHelper - ...done
12:09:10 getShares INFO fileservice.controller.AdminController - 2 Shares
12:09:15 <init> INFO fileservice.FileServiceHelper - new Hibernate Session: true
12:09:19 <init> INFO fileservice.FileServiceHelper - new Hibernate Session: true
12:09:19 getAllActivatedShare INFO fileservice.FileServiceHelper - Abfrage aller aktiven Shares...
12:09:19 getAllActivatedShare INFO fileservice.FileServiceHelper - ...done
12:09:19 getShares INFO fileservice.controller.AdminController - 2 Shares
12:09:21 <init> INFO fileservice.FileServiceHelper - new Hibernate Session: true
12:09:23 <init> INFO fileservice.FileServiceHelper - new Hibernate Session: true
12:09:23 getAllActivatedShare INFO fileservice.FileServiceHelper - Abfrage aller aktiven Shares...
12:09:23 getAllActivatedShare INFO fileservice.FileServiceHelper - ...done
12:09:23 getShares INFO fileservice.controller.AdminController - 2 Shares
12:09:24 <init> INFO fileservice.FileServiceHelper - new Hibernate Session: true
12:09:25 <init> INFO fileservice.FileServiceHelper - new Hibernate Session: true
12:09:25 getAllActivatedShare INFO fileservice.FileServiceHelper - Abfrage aller aktiven Shares...
12:09:25 getAllActivatedShare INFO fileservice.FileServiceHelper - ...done
12:09:25 getShares INFO fileservice.controller.AdminController - 2 Shares
12:09:26 <init> INFO fileservice.FileServiceHelper - new Hibernate Session: true
12:09:28 <init> INFO fileservice.FileServiceHelper - new Hibernate Session: true
12:09:28 getAllActivatedShare INFO fileservice.FileServiceHelper - Abfrage aller aktiven Shares...
12:09:28 getAllActivatedShare INFO fileservice.FileServiceHelper - ...done
12:09:28 getShares INFO fileservice.controller.AdminController - 2 Shares
12:09:29 <init> INFO fileservice.FileServiceHelper - new Hibernate Session: true
12:09:29 <init> INFO fileservice.FileServiceHelper - new Hibernate Session: true
12:09:29 getAllActivatedShare INFO fileservice.FileServiceHelper - Abfrage aller aktiven Shares...
12:09:29 getAllActivatedShare INFO fileservice.FileServiceHelper - ...done
12:09:29 getShares INFO fileservice.controller.AdminController - 2 Shares
12:09:30 <init> INFO fileservice.FileServiceHelper - new Hibernate Session: true
12:09:31 <init> INFO fileservice.FileServiceHelper - new Hibernate Session: true
12:09:31 getAllActivatedShare INFO fileservice.FileServiceHelper - Abfrage aller aktiven Shares...
12:09:31 getAllActivatedShare INFO fileservice.FileServiceHelper - ...done
12:09:31 getShares INFO fileservice.controller.AdminController - 2 Shares
12:09:32 <init> INFO fileservice.FileServiceHelper - new Hibernate Session: true
12:09:33 <init> INFO fileservice.FileServiceHelper - new Hibernate Session: true
12:09:33 getAllActivatedShare INFO fileservice.FileServiceHelper - Abfrage aller aktiven Shares...
12:09:33 getAllActivatedShare INFO fileservice.FileServiceHelper - ...done
12:09:33 getShares INFO fileservice.controller.AdminController - 2 Shares
12:09:33 <init> INFO fileservice.FileServiceHelper - new Hibernate Session: true
12:09:34 <init> INFO fileservice.FileServiceHelper - new Hibernate Session: true
12:09:34 getAllActivatedShare INFO fileservice.FileServiceHelper - Abfrage aller aktiven Shares...
12:09:34 getAllActivatedShare INFO fileservice.FileServiceHelper - ...done
12:09:34 getShares INFO fileservice.controller.AdminController - 2 Shares
12:09:35 <init> INFO fileservice.FileServiceHelper - new Hibernate Session: true
12:09:36 <init> INFO fileservice.FileServiceHelper - new Hibernate Session: true
12:09:36 getAllActivatedShare INFO fileservice.FileServiceHelper - Abfrage aller aktiven Shares...
12:09:36 getAllActivatedShare INFO fileservice.FileServiceHelper - ...done
12:09:36 getShares INFO fileservice.controller.AdminController - 2 Shares
12:09:36 <init> INFO fileservice.FileServiceHelper - new Hibernate Session: true
12:09:37 <init> INFO fileservice.FileServiceHelper - new Hibernate Session: true
12:09:37 getAllActivatedShare INFO fileservice.FileServiceHelper - Abfrage aller aktiven Shares...
12:09:37 getAllActivatedShare INFO fileservice.FileServiceHelper - ...done
12:09:37 getShares INFO fileservice.controller.AdminController - 2 Shares
12:09:38 <init> INFO fileservice.FileServiceHelper - new Hibernate Session: true
12:09:38 <init> INFO fileservice.FileServiceHelper - new Hibernate Session: false