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#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...