我有一个Vaadin应用程序,并且在同时运行应用程序的两个实例(一个在FF中,另一个在IE中)时出现一些奇怪的行为。我已经删除了大部分静态对象(这些导致应用程序在与另一个打开的应用程序并行使用时完全重新加载),现在我可以正常与UI进行交互,而无需完全重置。但是,我现在注意到,我在这两个界面中只获取一个用户的数据。我认为这是由我用来管理一些数据缓存和一个SOAP连接的单例对象引起的。我想知道是单引擎模式本身导致了奇怪的输出,还是只是我保留的静态实例对象?如何防止vaadin应用程序实例干扰彼此?
我尝试过使用ThreadLocal与我的单例,但所有我的变量总是空,当我尝试使用它们在我的单身人士的功能。目前我的单身人士包含这个,这可能是非常错误,因为它不起作用。
private static ThreadLocal<SoapClient> instance = new ThreadLocal<SoapClient>();
public static synchronized SoapClient getInstance(){
if (instance.get() == null) {
instance.set(new SoapClient());
}
return instance.get();
}
我选择了一个单独的对象,所以我就会一直访问缓存数据和我的用户的SOAP连接无处不在我的应用程序实例,我可以做这件事想到的唯一另一种方法是有一个静态对象的地方,但静态关键字似乎首先是我所有问题的原因。有没有办法解决这个问题,或者是否有其他方法导致它?
完美地工作,谢谢! – Valyrion