The ejb container can decide when it wants to instantiate your bean, some application servers could decide to do this on startup but this is not a requirement.
JBoss instantiates the bean when it is required and keeps the instantiated bean in a pool, beans are then used from the pool to meet the demand from the clients.
Are you really sure that ejbCreate was not called at some point between instantiation and the business method being called? I would be surprised if JBoss has missed calling ejbCreate()
I have a constructor, ejbCreate and myMethod in my EJB. I put System.out.println in constructor as well as ejbCreate method. When I called myMethod, JBoss prints out System.out.println which I gave in constructor and invoked myMethod. It didn't print what I gave in ejbCreate method.
Did I miss any configuration or settings?
Could you post the code for your bean implementation, I have never seen JBoss miss a call to ejbCreate.
Also could you post enough of the output from the console window from before the constructor is called to after the business method is called without removing enything else that might be in the middle.