Following situation:

* There is a bean "Page". In the field "type" there's the JNDI name of
  another bean ("SimplePage" in that case), which contains the actual
  data of the page.

* The "Page" bean and the "SimplePage" bean both have a method
  "update()" which takes a java.util.Map as argument containing the
  values to update.

* To find the page data, Page invokes the findByPrimaryKey() method of
  SimplePage (via reflection, because there will be other page types).

* If I call update() on a Page, it first updates its own values, then
  finds it's page data (SimplePage) and calls update() on that bean
  which then updates its values.

I hope this makes clear what I was trying to do...

The transaction policies were: "Requiered" for both update() methods
and create() of Page, "Supported" for any other method. I'm using BMP.

During the update() call to Page, it called findByPrimaryKey() on the
SimplePage (-> select statement). This seemed to lock the table, the
following update statement on the SimplePage table was just waiting
forever -- dead lock. But because these two calls (and the resulting
SQL statements) *should* have been made within the same transaction,
the select should not have blocked the update, or am I wrong here?

Anyway, setting the transaction policy for any method except update()
and create() to "NotSupported" solved the problem but I don't
understand why.

Can anyone tell me what happened? I think this is very basic.


-- 
Raffael Herzog
[EMAIL PROTECTED]

May the penguin be with you!
----
To unsubscribe, send email to [EMAIL PROTECTED] and
include in the body of the message "unsubscribe jonas-users".
For general help, send email to [EMAIL PROTECTED] and
include in the body of the message "help".

Reply via email to