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]