Issue with injection on JBoss 6.4EAP
jakusb Jun 28, 2017 11:02 AM<p></p>I am migrating a project from Jboss 5.1 to 6.4 and having some trouble with EJB injection..
This class is being instantiated after the dependent EJB is loaded, but for some reason the injection attribute is null.
What and how exactly should ConnectionServiceMBean<IDfSession> service get instantiated?
package nl.xxx.service.ejb.dctm; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import javax.naming.Binding; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NameClassPair; import javax.naming.NamingEnumeration; import javax.naming.NamingException; import javax.naming.event.EventContext; import org.apache.commons.lang.exception.ExceptionUtils; import org.apache.log4j.Logger; import org.jboss.ejb3.annotation.Depends; import org.jboss.naming.NamingContextFactory; import com.documentum.fc.client.IDfSession; import nl.xxx.service.ejb.AbstractConnectionEJB; import nl.xxx.service.mbean.ConnectionServiceMBean; import nl.xxx.service.mbean.dctm.DctmConnectionServiceMBean; import nl.xxx.service.mbean.jms.JmsConnectionServiceMBean; import nl.xxx.service.mbean.jms.JmsMDBConnection; /** * Abstract connection EJB class that extends the AbstractConnectionEJB. * This class depends on the DCTM service and the JMS service. * * @param <R> * @param <C> * @param <JMS> */ public abstract class AbstractDctmConnectionEJB<R extends Object, C extends IDfSession, JMS extends JmsMDBConnection> extends AbstractConnectionEJB<R, IDfSession, JMS>{ private static final Logger logger = Logger.getLogger(AbstractDctmConnectionEJB.class.getName()); @Depends({DctmConnectionServiceMBean.SERVICE_NAME}) private ConnectionServiceMBean<IDfSession> service; @Depends({JmsConnectionServiceMBean.SERVICE_NAME}) private ConnectionServiceMBean<JMS> JMSService; @Override public ConnectionServiceMBean<IDfSession> getService(){ logger.error("getService() for "+this.getClass()+" --> "); if (service==null) { logger.error("no service to return! "+ExceptionUtils.getFullStackTrace(new IllegalArgumentException("No service to return! "+getClass()))); throw new IllegalArgumentException("No service to return!"); } return service; } @Override public ConnectionServiceMBean<JMS> getJMSService(){ return JMSService; } }
This is the mbean config in jboss-service.xml:
<mbean code="nl.xxx.service.mbean.dctm.DctmConnectionService" name="xxx.connection.service:service=DctmConnectionServiceMBean"> <attribute name="DestinationJndiMappings"> XXX_TST=xxx.connection.dctm:service=XXX_TST YYY_TST=xxx.connection.dctm:service=YYY_TST </attribute> <attribute name="DefaultConnectionName">YYY_TST</attribute> <!-- <depends>jboss:service=Naming</depends> --> </mbean>
For some reason the attribute service is not linked to an instance of this mbean
any help in understanding what I am doing wrong is greatly impreciated
regards,
Jacob