I have a situation where I am sharing a singleton between my code that launches the embedded server and my web application. I have a war with classes and a deployment tool. When I print instances, I see:
abc.Abc@173a10f abc.Abc@105738
So it is not solitary. How it works?
My Jetty server-side startup code:
public static void main(String[] args) throws Exception { System.out.println(MySingleton.getInstance());
My ServletContextListener
side code:
public class AppServletContextListener implements ServletContextListener{ @Override public void contextInitialized(ServletContextEvent arg0) { System.out.println(MySingleton.getInstance()); } }
My singleton:
public class MySingleton { private static MySingleton INSTANCE = new MySingleton(); private MySingleton () {} public static MySingleton getInstance() { return INSTANCE; } }
I forced an exception inside the constructor. Looks like I'm getting two different.
java.lang.Exception at api.MySingleton.<init>(MySingleton.java:33) at api.MySingleton.<clinit>(MySingleton.java:22) at my.project.StartJetty.main(StartJetty.java:41) java.lang.Exception at api.MySingleton.<init>(MySingleton.java:33) at api.MySingleton.<clinit>(MySingleton.java:22) at api.AppServletContextListener.contextInitialized(AppServletContextListener.java:25) at org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:640) at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:229) at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1208) at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:586) at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:449) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:58) at org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:224) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:58) at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:89) at org.eclipse.jetty.server.Server.doStart(Server.java:258) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:58) at my.project.StartJetty.main(StartJetty.java:66)
flyer source share