struts-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Greg Lindholm <greg.lindh...@gmail.com>
Subject Re: Interceptor attempt
Date Wed, 10 Nov 2010 21:44:14 GMT
Hi David,

I've written a couple of these so let me give you some advice:

Create an Interface "HibernateAware" that your actions will implement
if they want a Hibernate Session and Transaction injected.

public interface HibernateAware
{

}

On Wed, Nov 10, 2010 at 3:45 PM, Altenhof, David Aron
<daltenho@iupui.edu> wrote:
> Hello all, I'm trying to write my own interceptor, and have a question or two...
>
> I'd like to write a simple interceptor that will manage hibernate sessions for me. I
know that there are more sophisticated ways to do this using Spring, etc. but this is mainly
a learning experience.
>
> So, given the simple code below, my questions are:
>
>
> 1)      Does it appear to be thread-safe?
>
> 2)      Is there any condition, other than an unhandled exception elsewhere in the
app, that would cause the transaction not to be committed?
>
> 3)      Are there any better places to stash the session and transaction references
other than the Action? I tried putting it on the value stack, but that wreaked havoc with
the Params interceptor.
>
> Thanks!
>
> David
>
> public class HibernateInterceptor implements Interceptor {
>
>                public String intercept(ActionInvocation actionInvocation) throws
Exception {
>
>                                Session sess = HibernateUtil.getSession();
>                                Transaction tx = sess.beginTransaction();
>
>                                // Put sess, tx in Action
>                                Action action = (Action) actionInvocation.getAction();
>                                if(action instanceof MyAction ) {
>                                                ((MyAction)action).setHibSession(sess);
>                                                ((MyAction)action).setHibTransaction(tx);
>                                }
>
>                                String rslt = actionInvocation.invoke();
>
>                                try {
>                                                // Try to commit:
>                                                tx.commit();
>
>                                } catch (Exception ex) {
>                                                // Try to rollback
and do other stuff here ...
>                                }
>                                return rslt;
>                }
>                public void destroy() {}
>                public void init() {}
> }
>
>

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


Mime
View raw message