From what I understand, a singleton is basically when you have a private member that represents the object you want to have a single instance for. Then in the constructor y
If your execution environment uses multiple class loaders, then you get one singleton per instance of your class. If your singleton class is loaded into different class loaders, then it's actually two distinct classes and then there will be two "singleton" instances.
You can find some info on the Tomcat class loaders in the documentation.