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à
Visu des données par utilisateur 2 : il y a un élément sur 2
Quelqu'un sait comment gérer le cache dans Weblogic ?
Au cas ou ça viendrait de mon code :
Entêtes des jsp :
hibernate.cfg.xml :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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">
HibernateSessionFactory.java :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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>
Méthode d'enregistrement dans Oracle :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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() { } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); } }
Partager