Weblogic 8.1 + Hibernate : pb de cache
Il semble que j'ai un problème de cache avec Weblogic 8.1 et Hibernate (avec Oracle 9). Avec Tomcat 5.5 ça marche bien. Le navigateur est IE6 et le cahce est réglé sur "Automatiquement". Java 1.4 et Hibernate 3.
Exemple vécu il y a quelques minutes :
utilisateur 1 : suppression de 2 éléments dans une donnée (autre que celles du référentiel).
Oracle : éléments supprimés
Visu des données par utilisateur 1 : les 2 éléments sont toujours là 8O
Visu des données par utilisateur 2 : il y a un élément sur 2 8O
Quelqu'un sait comment gérer le cache dans Weblogic ?
Au cas ou ça viendrait de mon code :
Entêtes des jsp :
Code:
1 2 3 4
| <meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache,no-store">
<meta http-equiv="cache" content="no store">
<meta http-equiv="expires" content="0"> |
hibernate.cfg.xml :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| <hibernate-configuration>
<session-factory name="InoutSessionFactory">
<property name="connection.datasource">java:comp/env/InoutPoolDataSource</property>
<property name="dialect">org.hibernate.dialect.OracleDialect</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.transaction.factory_class"> org.hibernate.transaction.JDBCTransactionFactory </property>
<property name="hibernate.current_session_context_class">thread</property>
<property name="hibernate.connection.autocommit">true</property>
<property name="cache.use_second_level_cache">true</property>
<property name="cache.provider_class">org.hibernate.cache.OSCacheProvider</property>
<property name="cache.use_query_cache">false</property>
<mapping resource=".../Table1.hbm.xml" />
...
<!-- referentiel -->
<class-cache class="fr...business.table.Table1" usage="read-write" />
</session-factory>
</hibernate-configuration> |
HibernateSessionFactory.java :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
public class HibernateSessionFactory {
private static final ThreadLocal threadLocal = new ThreadLocal();
private static final Configuration cfg = new Configuration();
private static SessionFactory sessionFactory;
public static Session currentSession() throws HibernateException {
Session session = (Session) threadLocal.get();
if (session == null) {
if (sessionFactory == null) {
try {
cfg.configure();
sessionFactory = cfg.buildSessionFactory();
}
catch (Exception e) {
System.err.println("%%%% Error Creating SessionFactory %%%%");
e.printStackTrace();
}
}
session = sessionFactory.openSession();
threadLocal.set(session);
}
return session;
}
public static void closeSession() throws HibernateException {
Session session = (Session) threadLocal.get();
threadLocal.set(null);
if (session != null) {
session.close();
}
}
private HibernateSessionFactory() {
}
} |
Méthode d'enregistrement dans Oracle :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
public static void store(Table1 table) throws Exception {
Session session = HibernateSessionFactory.currentSession();
try {
session.beginTransaction();
session.saveOrUpdate(table);
session.getTransaction().commit();
session.flush();
} catch (Exception e) {
log.error("table - store ", e);
session.getTransaction().rollback();
throw new Exception("table - store ", e);
}
} |