Announcement

Collapse
No announcement yet.

JBoss4+EJB2+Hibernate3.1: Session / Transaktion Interceptor

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • JBoss4+EJB2+Hibernate3.1: Session / Transaktion Interceptor

    Hallo,

    ich habe folgenden Problem:

    Ich nutze auf einem JBoss 4.0.4 Server das Hibernate 3.1 Framework. Nun möchte ich die Trankaktionen / Hibernate Sessions überwachen, um ein Log über z.B. geänderte Daten zu erhalten. Dazu benutze ich derzeit eine Klasse "HibernateInterceptor extends EmptyInterceptor".

    Bisher habe ich die Session aus der Klasse BaseDao mittels

    SessionFactory.getCurrentSession()

    geholt. Hier habe ich aber keine Möglichkeit gefunden, einen Interceptor zu registrieren. Deshalb wurde die Klasse BaseDao geändert, in dem stets eine neue Session erzeugt wird, welcher der Interceptor übergeben werden kann:

    public abstract class BaseDao extends BaseSessionBean {

    private SessionFactory sessionFactory;

    // private Session session; // the session with Interceptor

    protected SessionFactory getSessionFactory() {
    log.debug("getSessionFactory() called.");
    if (sessionFactory == null) {
    sessionFactory = HibernateUtil.getSessionFactory(getDataSourceJNDIN ame());
    }
    return sessionFactory;
    }

    protected Session getCurrentSession() {
    log.info("getCurrentSession() called.");
    /* bisher: ohne Interceptor */
    // Session current = getSessionFactory().getCurrentSession();
    /* jetzt: neue Session öffnen */
    Session session = getSessionFactory().openSession(HibernateIntercept or.getInstance());
    return session;
    }

    protected String getDataSourceJNDIName() {
    return PersistenceConst.ITEM_SESSION_FACTORY_JNDI_NAME;
    }

    }

    Kann jemand sagen, ob ich mittels getCurrentSession() stets die gleiche Session erhalte? Gibt es eine Möglichkeit, über eine Session auf die Hibernate-Configuration zuzugreifen (dort kann bekanntlich ebenfalls ein Interceptor registriert werden)?

    Oder gibt es eine bessere Lösung für dieses Problem (SOA etc.), ohne Servlet-Filter oder dergleichen, da ich derzeit keine Servlets benutze. Ich wäre über jeden Hinweis oder Beispiele sehr dankbar!

    Viele Grüße

    Marek
Working...
X