If the entity manager that the Singleton is using is transaction scoped, then the lifetime of the Singleton doesn't matter. In a way, stateless session beans also have an infinite lifetime once created (their scope is essentially 'none', but their instances are pooled and kept being re-used).
Every time the method in the singleton services a request, a new transaction is started and a new persistence context is piggy-backed to that, even though the entity manager instance seems to be the same throughout those requests. This is normal behavior and should not 'suddenly' return nulls.
It might be worth checking if your singleton is using appropriate locks. If the entity manager is accessed concurrently then this may be the cause of undefined behavior.