Yes, that was the issue, it was interceptor order related.

Now if only I could get the persistent entity not to be flushed under specific 
conditions:

 - Exception 
 - Non-SUCCESS return code, etc.

> -----Original Message-----
> From: Chris Pratt [mailto:thechrispr...@gmail.com]
> Sent: Wednesday, March 09, 2011 1:35 PM
> To: Struts Users Mailing List
> Subject: Re: Re : Re : ModelDriven & Hibernate Entities
> 
> It might just be an order of interceptors problem.  One of your first
> interceptors should be your login check.  That should definitely happen
> before the standard paramsPrepareParamsStack is run.
>   (*Chris*)
> 
> On Wed, Mar 9, 2011 at 11:04 AM, CRANFORD, CHRIS
> <chris.cranf...@setech.com>wrote:
> 
> > Francois -
> >
> > I use the standard paramsPrepareParamsStack interceptor from Struts.
> >
> > All I have done on my end is wrap this interceptor stack with a few
> > application specific interceptors that control things such as
> authentication
> > required, auditing, and logging.  I stepped upon my issue one day
> when I had
> > returned from lunch and my session had timed out.  I hit the SAVE
> button on
> > a form and it redirected me to our login page.
> >
> > But prior to logging back in; I checked the database and noticed that
> the
> > record was in fact persisted with the changes from the form.  All I
> can
> > gather is the following:
> >
> > 1. Request comes in for Struts
> > 2. Hibernate Session opened via OSIV
> > 3. Model is loaded from DB via prepare()
> > 4. Struts copies parameters into the model
> > 5. Validation/Interceptors fire
> > 6. Authentication Interceptor detects timed out session, returns
> LOGIN
> > 7. User presented with login page
> > 8. OSIV filter closes, changes from #4 persisted.
> >
> > I then created a simple test action where I load a persist entity
> from the
> > DB in a ModelDriven action, I call the action passing parameters that
> are
> > properties on the entity.  Then the execute() method does nothing
> more than
> > return SUCCESS which maps to my /pages/done.jsp.  The changes are
> committed.
> >
> > I'd prefer that changes aren't committed unless I explicitly call to
> do so
> > on the EntityManager; however I understand Hibernate/JPA's reasons
> behind
> > why it works the way it does.
> >
> >
> >
> > > -----Original Message-----
> > > From: François Rouxel [mailto:rouxe...@yahoo.com]
> > > Sent: Wednesday, March 09, 2011 12:24 PM
> > > To: Struts Users Mailing List
> > > Subject: Re : Re : ModelDriven & Hibernate Entities
> > >
> > > Hi Chris,
> > > first,
> > > you might have another pb, because struts2 does not change your
> model
> > > if a
> > > validation failed. In may case, the model is not changed so not
> > > persisted. Do u
> > > use validation and workflow interceptor ?
> > > second,
> > > you are right about MVC pattern, but, just be aware that when you
> use
> > > OSIV
> > > pattern, hibernate call backend service when loading data...:-)) so
> > > your JSP is
> > > not just a view in that case....
> > >
> > >
> > > I wrote my first mail thinking you wanna rollback after an
> exception
> > > occured.
> > > maybe it's gonna help others.
> > >
> > > fr/
> > >
> > >
> > >  ____________________________________________
> > > ____________________________________________
> > >
> > >
> > >
> > > ----- Message d'origine ----
> > > De : "CRANFORD, CHRIS" <chris.cranf...@setech.com>
> > > À : Struts Users Mailing List <user@struts.apache.org>
> > > Envoyé le : Mer 9 mars 2011, 13h 09min 33s
> > > Objet : RE: Re : ModelDriven & Hibernate Entities
> > >
> > > Francois -
> > >
> > > While that may work for you, I wouldn't place anything Hibernate or
> > > persistence
> > > related in my JSP pages at all.  In my mind, this breaks the entire
> > > reasoning
> > > behind MVC and the view simply there to render data.  If the view
> is
> > > doing
> > > anything beyond that, I have a design problem, but again that's my
> > > opinion.
> > >
> > > But what about when you use the INPUT result code in your execute()
> > > method.
> > >
> > > If I return the user to the INPUT method because maybe I'm not
> using
> > > the Struts
> > > validation framework and doing it myself in my execute() method or
> I
> > > have some
> > > complex conditions I must check for before I save the data.  In
> this
> > > case, by
> > > returning INPUT and setting some action field or error messages to
> be
> > > shown to
> > > the user, the error exception handler isn't fired, thus your
> rollback
> > > isn't
> > > fired either; leaving your entity persisted with likely dirty data.
> > >
> > > > -----Original Message-----
> > > > From: François Rouxel [mailto:rouxe...@yahoo.com]
> > > > Sent: Wednesday, March 09, 2011 11:43 AM
> > > > To: Struts Users Mailing List
> > > > Subject: Re : ModelDriven & Hibernate Entities
> > > >
> > > > same issue
> > > > this how  I fixed it : (the main idea is to redirect to a jsp if
> an
> > > > exception
> > > > occured, and the jsp rollback)
> > > >
> > > > create an error page error.jsp
> > > > <%@page import="com.rdvcentral.util.persistance.HibernateUtil"%>
> > > > <%@ page contentType="text/html;charset=UTF-8" language="java"
> %>
> > > > <%@ taglib prefix="s" uri="/struts-tags" %>
> > > > <%@ taglib prefix="sj" uri="/struts-jquery-tags" %>
> > > >
> > > >
> > > > <%@page import="org.hibernate.Transaction"%>
> > > > <%@page import="org.apache.log4j.Logger"%>
> > > >
> > > > <s:property value="%{logError(exception)}"/>
> > > > <%
> > > >     Transaction tx = new
> > > >
> > >
> HibernateUtil().getSessionFactory().getCurrentSession().getTransaction(
> > > > );
> > > >     if (tx != null && tx.isActive()) {
> > > >         tx.rollback();
> > > >     }
> > > > %>
> > > >
> > > > In your struts mapping file :
> > > >
> > > >         <global-results>
> > > >             <result name="unhandledException">/error.jsp</result>
> > > >             </result>
> > > >         </global-results>
> > > >
> > > >         <global-exception-mappings>
> > > >             <exception-mapping exception="java.lang.Exception"
> > > >                 result="unhandledException" />
> > > >         </global-exception-mappings>
> > > >
> > > > hope it will help you
> > > >
> > > >
> > > >  ____________________________________________
> > > > ____________________________________________
> > > >
> > > >
> > > >
> > > > ----- Message d'origine ----
> > > > De : "CRANFORD, CHRIS" <chris.cranf...@setech.com>
> > > > À : Struts Users Mailing List <user@struts.apache.org>
> > > > Envoyé le : Mer 9 mars 2011, 12h 34min 32s
> > > > Objet : ModelDriven & Hibernate Entities
> > > >
> > > > I had started down a path of using the ModelDriven interface from
> > > > Struts
> > > > because I find it really helps maintain a class action class
> without
> > > > large numbers of get/set methods for screens that contain a lot
> of
> > > form
> > > > fields.
> > > >
> > > > However, I am finding at least with how I have attempted to
> approach
> > > > ModelDriven to have several drawbacks.  For example, by using the
> > > OSIV
> > > > (Open Session In View) filter, I am finding that when Struts sets
> the
> > > > properties on the entity and afterward if an exception is thrown,
> > > > caught
> > > > and handled and doesn't trigger Hibernate to actually "rollback";
> the
> > > > changes are persisted which leaves my entity in a dirty
> inconsistent
> > > > state.
> > > >
> > > > How have others solved this by using your entity domain POJOs in
> your
> > > > view?
> > > >
> > > > Do you use them detached from the session so that you explicitly
> have
> > > > to
> > > > merge them to the session to be persisted?  If so, how do you
> deal
> > > with
> > > > multiple lazy loaded collections in your entity?
> > > >
> > > > Or would using DTO objects from my service layer a better
> alternative
> > > > to
> > > > insure that no data is actually persisted to the database that
> > > > shouldn't
> > > > be?
> > > >
> > > >
> > > > -----------------------------------------------------------------
> ----
> > > > To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
> > > > For additional commands, e-mail: user-h...@struts.apache.org
> > > >
> > > >
> > > >
> > > >
> > > > -----------------------------------------------------------------
> ----
> > > > To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
> > > > For additional commands, e-mail: user-h...@struts.apache.org
> > > >
> > >
> > >
> > >
> > > -------------------------------------------------------------------
> --
> > > To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
> > > For additional commands, e-mail: user-h...@struts.apache.org
> > >
> > >
> > >
> > >
> > > -------------------------------------------------------------------
> --
> > > To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
> > > For additional commands, e-mail: user-h...@struts.apache.org
> > >
> >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
> > For additional commands, e-mail: user-h...@struts.apache.org
> >
> >


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
For additional commands, e-mail: user-h...@struts.apache.org

Reply via email to