java - Why is PostConstruct not called? -
i working on simple java ee application.
i have class this:
import javax.annotation.postconstruct; import javax.ejb.stateless; import javax.persistence.entitymanager; import javax.persistence.entitymanagerfactory; import javax.persistence.persistence; @stateless public class blogentrydao { entitymanager em; @postconstruct public void initialize(){ entitymanagerfactory emf = persistence.createentitymanagerfactory("persistence"); em = emf.createentitymanager(); } public void addnewentry(){ blogentry blogentry = new blogentry(); blogentry.settitle("test"); blogentry.setcontent("asdfasfas"); em.persist(blogentry); } }
so managed bean calls method. until here no problems. since initialize method not called, getting npe in em.persist.
why initialize method not being called? running on glassfish server.
regards.
the java ee bean annotations such @postconstruct
apply container-managed beans. if calling new blogentrydao
yourself, container isn't going intercept creation , call @postconstruct
method.
(furthermore, you'd better off using @persistencecontext
or @persistenceunit
instead of manually fetching entitymanagerfactory
in initialize()
method, , should creating entitymanager
each call addnewentry()
, since they're short-lived. making these changes eliminate need initialize()
@ all.)
Comments
Post a Comment