Monday 15 April 2013

java - Application creates multiple CDI-Beans by mistake -



java - Application creates multiple CDI-Beans by mistake -

i'm absolutely baffled. have standard, old school ejb-cdi-jsf-hibernate javaee application, running on jboss 7.1. furthermore construction absolut standard structure. have jsf-sites, access cdi beans. cdi beans holding reference 1 of entities, ejbs used daos. 1 of beans commissioncontroller. works absolutely fine. 1 instance created 1 user.

package controller; import java.io.serializable; import java.util.date; import javax.annotation.postconstruct; import javax.enterprise.context.sessionscoped; import javax.inject.inject; import javax.inject.named; import lombok.data; import lombok.extern.java.log; import entities.commission; @sessionscoped @data @log @named public class commissioncontroller implements serializable { private static final long serialversionuid = -8452887234021054225l; @inject private usercontroller usercontroller; @inject private cartcontroller cartcontroller; private commission commission; @postconstruct public void init() { commission = new commission(); log.info("new commissioncontroller instance"); } public void makenewcommission() { commission.setcart(cartcontroller.getcart()); commission.setorderdate(new date()); commission.setorderer(usercontroller.getuser()); cartcontroller.clearcart(); log.info(commission.tostring()); } }

now have different bean, think it's excact same structure:

package controller; import java.io.serializable; import javax.annotation.postconstruct; import javax.annotation.predestroy; import javax.enterprise.context.sessionscoped; import javax.inject.inject; import javax.inject.named; import lombok.data; import lombok.extern.java.log; import entities.article; import entities.cart; @sessionscoped @data @log @named public class cartcontroller implements serializable { private static final long serialversionuid = 649140288918816488l; @inject private usercontroller usercontroller; @inject private articlecontroller articlecontroller; private cart cart; public void addtocart(article article) { cart.getarticlelist().add(article); cart.setsum(cart.getsum() + article.getprice()); } public void clearcart() { cart.getarticlelist().clear(); cart.setsum(0.0); } @predestroy public void destroy() { log.info("bean destroyed"); } @postconstruct public void init() { cart = new cart(); log.info("new cartcontroller instance"); } public void removefromcart(article article) { cart.getarticlelist().remove(article); cart.setsum(cart.getsum() - article.getprice()); } }

i can't explain myself, sec bean instanciated 1 time again , 1 time again , can't store in it, because reference bean.

please, help me bring lite in mystery. if need additional information, love give you. maybe, have big lack of understanding now, can't help myself.

gimby gave me reply question. in fact, jboss 7.1.0 community edition outdated. wildfly 8.0.0 final, worked fine. so, if you're working fantastic possibilities of cdi, seek wildfly instead of jboss 7.1.0 final community.

java jsf java-ee cdi

No comments:

Post a Comment