[jboss-user] [Messaging, JMS & JBossMQ] - Re: Bug: Injected EJB objects instantiated on every MDB call

jaikiran do-not-reply at jboss.com
Thu Mar 27 10:16:51 EDT 2008


I do see the same behaviour on 4.2.2. Here's my MDB:

package org.myapp.ejb.impl;
  | 
  | import javax.ejb.ActivationConfigProperty;
  | import javax.ejb.EJB;
  | import javax.ejb.MessageDriven;
  | import javax.jms.Message;
  | import javax.jms.MessageListener;
  | import javax.persistence.PostRemove;
  | 
  | import org.apache.log4j.Logger;
  | import org.myapp.ejb.UserManager;
  | 
  | /**
  |  * MDB for testing injection of EJBs
  |  *  
  |  * @author Jaikiran Pai
  |  * @since
  |  */
  | @MessageDriven(activationConfig =
  | {
  | @ActivationConfigProperty(propertyName="destinationType",
  | propertyValue="javax.jms.Queue"),
  | @ActivationConfigProperty(propertyName="destination",
  | propertyValue="queue/A")
  | })
  | public class MyMDB implements MessageListener {
  | 
  | 	private static Logger logger = Logger.getLogger(MyMDB.class);
  | 	
  | 	
  | 	private UserManager userManager;
  | 	
  | 	public UserManager getUserManager() {
  | 		return this.userManager;
  | 	}
  | 	
  | 	@EJB
  | 	public void setUserManager(UserManager userManager) {
  | 		this.userManager = userManager;
  | 	}
  | 
  | 	/**
  | 	 * Default constructor
  | 	 *
  | 	 */
  | 	public MyMDB() {
  | 		System.out.println("In constructor of MDB");
  | 	}
  | 
  | 	/**
  | 	 *  
  | 	 */
  | 	public void onMessage(Message arg0) {
  | 		System.out.println("onMessage of MyMDB called");
  | 		System.out.println("EJB is " + getUserManager());
  | 		getUserManager().getUser((long)1);
  | 		logger.info("onMessage of MyMDB called");
  | 	}
  | 	
  | 	
  | 
  | }

A new instance of UserManagerBean gets injected everytime the onMessage method is invoked. I just glanced through the EJB spec and did not see any mention of this behaviour being mandated. You are right, the injection should have happened only if a new instance of the MDB was created instead of injecting the EJB on every call of onMessage.

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4139296#4139296

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4139296



More information about the jboss-user mailing list