If you spawn new threads(creating a timer is spawning a new
thread) from inside an EJB instance, the container will not be able to manage the lifecycle of the bean instance, as, it would not be able to determine when a particular method has finished execution.
Just a question, why, do you want to make your ejb a timer task? Can't you have a timer task seperately and call the session bean from inside the timer task, using local interface? That was just a thought, may be not relevant in the problem you have.