我很想知道用javax.ejb.Singleton
注释标记的类实例的范围。
我正在开发一个Web应用程序,该应用程序包含6个独立的REST应用程序。这6个应用程序被编译为战争,并且都部署在同一个TomEE网络服务器中。
我被迫使用Singleton注释,因为我需要一种在servlet过滤器和服务代码之间共享数据的方法,并且普通bean的范围似乎不在过滤器和应用程序之间共享。为此目的,Singleton似乎工作正常(虽然我不喜欢使用Singleton的想法,我正在寻找替代方法)。
无论如何,既然我正在使用Singleton,我对它的范围有疑问。
Singleton实例的范围是否限制在每个webapp内(其中一个已部署的Web应用程序无法在同一个TomEE中看到与另一个Web应用程序相同的Singleton),或者Web服务器是否以某种方式在所有已部署的内部共享Singleton webapps?
答案 0 :(得分:2)
要回答您的问题,@Singleton
EJB严格限定在各自的应用程序中;他们也可能在两个不同的服务器实例上。如果您有一个可重现的测试用例来证明您最喜欢的EE容器 - 在这种情况下是TomEE - 它的开发人员会感谢您提供错误报告。并且可能会高度重视它。
至于你的用例:增加范围总是一个坏主意,只是通常无法相互通信的组件可以这样做。在软件组件之间建立适当的通信渠道,所有这些都将落实到位。