Jean-Francois,

I certainly did not mean to imply this is a bug or any deficiency of hivetranse. I find hivetranse quite solid. :)

I believe that it wasn't primarily designed for a Tapestry application or tailored exclusively for Hiberate. So for me, it is a question of how should it (or can it) be properly applied to a Tapestry application?

I did try the approach you suggest, but it really is not very natural to make it work with Tapestry's form/object updating and validation, unless you create separate domain objects for the web layer and persistence and copy from one to another, which I would like to avoid. At least that was the best I could come up with...

Thanks!

-- Mark R

Jean-Francois Poilpret wrote:
Hello Mark,

This "problem" is by design (for me it is not a bug, this is the way
transaction demarcation is supposed to work in hivetranse, changing it would
bring compatibility problems with existing applications, however, this could
probably be done through some extra setting, I will think about it, but I
need to check if there is no ambiguous cases with that).

For the time being, what is possible (and that I consider clean, although
some people in this list have shown some disagreement to this approach) is
to put the transaction demarcation "Required" at a method in a façade, this
method can then call different methods of other services or DAO, all in the
same transaction.

Hope this provides a little help;-)

Cheers

Jean-Francois

-----Original Message-----
From: news [mailto:[EMAIL PROTECTED] On Behalf Of Mark Reynolds
Sent: Thursday, April 13, 2006 4:42 AM
To: [email protected]
Subject: Re: Open Session in View - Tapestry

I tried the hivetranse approach, but had 2 problems. 1) hivetranse seems to limit a hibernate session to a single transaction, and 2) its declarative approach ultimately limits the transaction demarcation to a single method call, and I couldn't figure out a good way to structure my application such that all the work (load object, update object, commit transaction) occurred within the scope of a single service method call and still left me with a place to catch any exception and update the view accordingly.

If someone has worked out a good pattern for using hivetranse in the context of simple hibernate-based CRUD functionality in Tapestry 4 with validation, I would love to hear about it.

I also looked at what Howard is doing with Epluribus (http://www.javaforge.com/proj/sources/sccBrowse.do?proj_id=220&dir=epluribu s%2Ftrunk), but that is unfinished (it does have an example of a WebRequestServicerFilter, which is what you need to make sure the transaction is committed/rolled-back at the end of the request, as stated in your question).

I ended up adapting Kent Tong's SessionOwner approach from Chapter 14 of his indispensable book. It involves injecting the thread-specific SessionOwner (I called it TransactionManager) into your page and using it to commit or rollback the transction as desired.

-- Mark R

Sukma Agung Verdianto wrote:
Hi,

I'm trying to implement Open Session in View in tapestry application.
There is a way to create servlet filter to open and close the db session.
(I'm using ServletRequestServicer)
My question is, how can I catch the page exception to rollback the
transaction, because
tapestry ExceptionHandling catch that exceptin and never throw it as
servlet
exception.
Sorry for my bad english :(

Rdgs,
Verdianto



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to