Was just about to say that looks fine too, when I saw the problem :)
The fact that you put your Person object in the cache doesn't make the Person
object transactional. You are changing the person object by changing the
address -- that change won't roll back.
To get what you want you'd need something more like:
| if("add".equals(command)){
| Person old = ((Person)cache.get("/test/p1","p1"));
| Person clone = (Person) old.clone();
| Address oldAdd = clone.getAddress();
| Address addClone = (Address) oldAdd.clone();
| addClone.setCity(value);
| clone.setAddress(addClone);
| cache.put("/test/a1","a1" ,clone);
|
| if("pp".equals(key)){
|
System.out.println("Gettttttttttttttbefore:a1=" + cache.get("/test/a1","a1"));
| throw new Exception("throw exception
for rollback");
| }
|
| }
Usual warning that above code is for illustration, may not compile, etc.
To have changes to your objects be transactional, you'd need to use PojoCache
and instrument your classes.
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3966456#3966456
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3966456
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user