Hi Hazem,
I have implemented as per your suggestion using a single PL.
The PL is registered in facesConfig.xml and the hibernateconfig file has
<property name="current_session_context_class">thread</property>
still I am getting
"org.hibernate.LazyInitializationException: could not initialize proxy - no
Session" error
Any clues ?
==========================================
=========================================
public class RestoreViewPhaseListener implements PhaseListener {
public void beforePhase(PhaseEvent event) {
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
sessionFactory.getCurrentSession().beginTransaction();
}
public void afterPhase(PhaseEvent event) {
SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
try {
sessionFactory.getCurrentSession().getTransaction().commit();
} catch (Throwable ex) {
// very bad error here, occured...
if (sessionFactory.getCurrentSession().
getTransaction().isActive()) {
sessionFactory.getCurrentSession().
getTransaction().rollback();
}
}
}
public PhaseId getPhaseId() {
return PhaseId.INVOKE_APPLICATION;
}
}
=========================
HibernateUtil.java
==========================
public class HibernateUtil {
private static final SessionFactory sessionFactory;
static {
try {
// Create the SessionFactory from hibernate.cfg.xml
sessionFactory = new
Configuration().configure().buildSessionFactory();
} catch (Throwable ex) {
// Make sure you log the exception, as it might be swallowed
System.err.println("Initial SessionFactory creation failed." +
ex);
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
Can you tell me if I am missing anything here?
Thank you.
Regards
Ayub
On Thu, Sep 11, 2008 at 9:45 PM, Hazem Saleh <[EMAIL PROTECTED]> wrote:
> Hi Ayub,
>
> I tried this code before and it worked fine.
> You should check your hibernate configuration, and make sure that:
> 1. You are registered your PLs.
> 2. <property name="current_session_context_class">thread</property>.
>
> Another better idea, I got later, you can use only one PL on the
> (INVOKE_APPLICATION) phase to implement the OSPVP.
>
> Thank you.
>
>
> On Thu, Sep 11, 2008 at 11:22 AM, Ayub Khan <[EMAIL PROTECTED]> wrote:
>
>> Hi,
>> I have impleted the phaseListener using the idea presented on
>> http://www.jroller.com/HazemBlog/entry/implementing_hibernate_open_session_per
>>
>> I am getting "org.hibernate.HibernateException: createQuery is not valid
>> without active transaction" error message.
>>
>> Below is the code of phase listeners:
>>
>> public class RestoreViewPhaseListener implements PhaseListener {
>>
>> public void afterPhase(PhaseEvent event) {
>> }
>>
>> public void beforePhase(PhaseEvent event) {
>> SessionFactory sessionFactory =
>>
>> HibernateUtil.getSessionFactory();
>> sessionFactory.getCurrentSession().beginTransaction();
>>
>>
>> }
>>
>> public PhaseId getPhaseId() {
>> return PhaseId.RESTORE_VIEW;
>> }
>>
>> }
>>
>> Please let me where to open and close session and transaction.
>>
>> Thanks
>> Ayub
>>
>>
>>
>> --
>> -- "Two roads diverged in a wood
>> And I took the one less traveled by
>> And that has made all the difference.
>>
>> Robert Frost....."
>>
>
>
>
> --
> Hazem Ahmed Saleh Ahmed
>
> Web blog: http://www.jroller.com/page/HazemBlog
>
> [Web 2.0] GMaps Integration with JSF + Apache Tomahawk + JBoss a4j:
> http://code.google.com/p/gmaps4jsf/
>
--
-- "Two roads diverged in a wood
And I took the one less traveled by
And that has made all the difference.
Robert Frost....."