2011-05-19 52 views
1

我有一个使用Spring的java应用程序。春豆是单身。当我将应用程序部署为applet,并且用户在浏览器的不同选项卡中打开时,应用程序实例共享相同的spring bean并导致一些问题。那么,我们有什么方法可以强制在不同的JVM实例中打开每个applet,或者有任何建议来处理这个吗?小程序singleton spring beans问题

谢谢。

+1

spring bean默认情况下是singleton,但您可以使用singleton = false属性更改该bean。 – sinha 2011-05-19 11:34:17

+0

@sinha但是会解决错误的问题 – 2011-05-19 11:47:11

回答

2

春豆在他们的情况下是单身,而不是经典的每单身单身。所以,我想说的问题是,小程序显然是共享相同的Spring上下文(这是他们不应该)


回复评论:

ServiceProvider.getContextInstace().getService(name...). 

如何让这个的ServiceProvider使用ThreadLocal内部存储它的上下文(有平时应每小应用程序只有一个线程,对吧?)

+0

是的。在代码中,服务bean(spring bean)是从单个上下文接收的。类似于ServiceProvider.getContextInstace()。getService(name ...)。这对正常的应用程序应该没问题。如何使用小程序管理它? – 2011-05-19 11:38:56

+0

@Response ThreadLocal:不,小程序可以有不同的线程。 – 2011-05-19 11:58:45

+0

@Loc好吧,事情变得更加复杂。我想你必须保留一个Map''。打败我左边的关键是什么。如果最坏的情况发生,您可以使用'System.identityhashCode(applet)'作为键。 – 2011-05-19 12:08:48

0

尝试指示小程序使用下列财产Applet标记内使用单独的JVM:

<param name="separate_jvm" value="true" />