The onEjbCreate() method should be called when the EJB is put into the "ready pool". This occurs before a bean instance can be returned from a jndi lookup. Are you saying the the onEjbCreate() method is never being called?
I noticed that you don't have the @Stateless on the class.
Code:
@Stateless
public class ExpensesEJBBean extends AbstractStatelessSessionBean implements ExpensesEJBLocal, ExpensesEJB {
}
If the onEjbCreate() method is not being called then there is no way the Spring initialization is done. Code from the AbstractStatelessSessionBean
Code:
public void ejbCreate() throws CreateException {
loadBeanFactory();
onEjbCreate();
}
This would lead me to believe that the session bean is not setup correctly in JBoss as the EJB lifecycle methods (ejbCreate(), etc) are not being called.