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
Post a Comment