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

Reply via email to