java ee - how can i get a isolate transaction on EJB? -


i have following ejb session bean:

@stateless public class facadebean implements facadebeanremote {     @persistencecontext(unitname = "ejercicio7pu")     private entitymanager em;      @override     public void insertar(final long id) {         record r = new record();         r.setid(id);         em.persist(r);     }      @override     public void insertartres(final long id1, final long id2, final long id3) {         logger.getlogger(facadebean.class.getname()).log(level.info, "insertando registros");         insertar(id1);         insertar(id2);         insertar(id3);     }  } 

and record entity following:

@entity public class record implements serializable{      private static final long serialversionuid = 1l;      @id     private long id;      public long getid() {         return id;     }      public void setid(long id) {         this.id = id;     }      @override     public string tostring() {         return "record{" + "id=" + id + '}';     }  } 

i calling remote method on standalone java application insert 3 numbers:

 ejb.insertartres(1l, 2l, 3l); 

now, want when call again remote method following numbers:

ejb.insertartres(4l, 5l, 3l); 

the numbers 4 , 5 saved if exception occurs number 3.

i tried set insert method

@transactionattribute(transactionattributetype.requires_new) 

but not working my

you must use sessioncontext.getbusinessobject (facadebeanlocal.class);
instance of bean apply require_new.

@stateless public class facadebean implements facadebeanremote {     @persistencecontext(unitname = "ejercicio7pu")     private entitymanager em;     @resource     private sessioncontext sessioncontext;      private facadebeanlocal local;      @postconstruct     void init() {       local = sessioncontext.getbusinessobject(facadebeanlocal.class);      }      @override     @transactionattribute(transactionattributetype.requires_new)     public void insertar(final long id) {         record r = new record();         r.setid(id);         em.persist(r);     }      @override     public void insertartres(final long id1, final long id2, final long id3) {         logger.getlogger(facadebean.class.getname()).log(level.info, "insertando registros");         local.insertar(id1);         local.insertar(id2);         local.insertar(id3);     }  } 

Comments