J2EE está diseñado teniendo en cuenta la agrupación en clúster, por lo que cualquier diseño que admita tendrá que funcionar con varias JVM. De su pregunta entiendo que no está preocupado por un entorno agrupado, por lo que una simple inserción en JNDI en su servidor de aplicaciones debería hacerlo. En Glassfish, eso se llama lifecycle listener. Incluso después del arranque, inserte su singleton en JNDI, y luego haga que todo lo demás haga una búsqueda JNDI para encontrarlo.
Tenga en cuenta que GlassFish podría seguir cometiendo un error aquí, en el sentido de que podría serializar la clase a JNDI provocando que obtenga diferentes instancias. Dudo que realmente haga esto dentro de una JVM, pero no lo sabrás hasta que lo pruebes.
La respuesta real es que J2EE es hostil a un singleton verdadero global, y la manera J2EE de resolver el problema es replantear la solución. Algo así como una base de datos para contener valores o algún otro servicio externo que pueda garantizar que solo exista una instancia de los datos (incluso si existen varias instancias de objetos que representan los datos) es la vía J2EE.
tal vez eso ayuda: http://stackoverflow.com/questions/70689/efficient -way-to-implement-singleton-pattern-in-java – Chris
¿Qué servidor de aplicaciones estás usando? –
¿Está haciendo su PR su propio blog? Eso es lo que dice tu perfil. Entonces, "Encontré un enlace" es realmente "Escribí esa publicación". – ChssPly76