You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cactus-user@jakarta.apache.org by Tim McAuley <mc...@tcd.ie> on 2002/10/09 13:25:22 UTC

Controlling transactions during unit tests

Hi,

I am having a trouble with transactions during one of my unit tests, using
JBoss 3. Someone
might be able to help.

I have some code to update a member's interest in a topic. This will
retrieve the list of current interests, store them in a cache (separate
collection) and update the specified interest when asked to do so (both in
the cache and to the db currently).

DB Layout:     Member 1 - N MemberInterest N - 1 Interest

This call will be made through a session bean under normal operation but for
the moment I would like to test it separately (using Cactus).

Currently I get an exception, with the message:
"A CMR collection may only be used within the transaction in which it was
created"

This happens when I want to load the list of member interests into a cache.
This is done by retrieving the cmr collection and then iterating through it
to create a separate collection in cache.

How can I get this to run within the same transaction using cactus, like it
would under normal operation using a session bean (I presume)?

I have tried this code (within the unit test) but it does not seem to help:
    uTrans = (UserTransaction)new
        InitialContext().lookup("UserTransaction");
    uTrans.begin();
    // Create the action... which will create the interest cache on first
call
    interestAction = new UpdateInterestAction(memberContext, interest,
value);
    uTrans.commit();

This is the only reference I could find on the web to a similar problem...
and suggesting to make sure to run everything within a usertransaction.
http://www.jboss.org/forums/thread.jsp?forum=46&thread=20507&message=3738688
#3738688

I am using JBoss 3.0.2 (and 3.0.3), on Win 2K, accessing Postgres 7.1.3

Many thanks,

Tim




--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>


RE: Controlling transactions during unit tests

Posted by Nicholas Lesiecki <ni...@eblox.com>.
How doesn't the included code help?--It's almost exactly what I would have
suggested. Does it still report the same error?

Cheers,
Nick

> -----Original Message-----
> From: Tim McAuley [mailto:mcauleyt@tcd.ie]
> Sent: Wednesday, October 09, 2002 4:25 AM
> To: cactus-user@jakarta.apache.org
> Subject: Controlling transactions during unit tests
>
>
> Hi,
>
> I am having a trouble with transactions during one of my unit tests, using
> JBoss 3. Someone
> might be able to help.
>
> I have some code to update a member's interest in a topic. This will
> retrieve the list of current interests, store them in a cache (separate
> collection) and update the specified interest when asked to do so (both in
> the cache and to the db currently).
>
> DB Layout:     Member 1 - N MemberInterest N - 1 Interest
>
> This call will be made through a session bean under normal
> operation but for
> the moment I would like to test it separately (using Cactus).
>
> Currently I get an exception, with the message:
> "A CMR collection may only be used within the transaction in which it was
> created"
>
> This happens when I want to load the list of member interests
> into a cache.
> This is done by retrieving the cmr collection and then iterating
> through it
> to create a separate collection in cache.
>
> How can I get this to run within the same transaction using
> cactus, like it
> would under normal operation using a session bean (I presume)?
>
> I have tried this code (within the unit test) but it does not
> seem to help:
>     uTrans = (UserTransaction)new
>         InitialContext().lookup("UserTransaction");
>     uTrans.begin();
>     // Create the action... which will create the interest cache on first
> call
>     interestAction = new UpdateInterestAction(memberContext, interest,
> value);
>     uTrans.commit();
>
> This is the only reference I could find on the web to a similar problem...
> and suggesting to make sure to run everything within a usertransaction.
> http://www.jboss.org/forums/thread.jsp?forum=46&thread=20507&messa
ge=3738688
#3738688

I am using JBoss 3.0.2 (and 3.0.3), on Win 2K, accessing Postgres 7.1.3

Many thanks,

Tim




--
To unsubscribe, e-mail:
<ma...@jakarta.apache.org>
For additional commands, e-mail:
<ma...@jakarta.apache.org>




--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>