JSP,托管模式下的Google应用,静态变量

时间:2010-08-07 10:28:28

标签: java google-app-engine jsp

当我以托管模式启动我的网站时,所有声明为静态的变量都会在不同的请求中保留它的值。当我将其上传到谷歌应用服务器时,它工作正常(?)。

即。 我有public static String action = "index";,如果我在另一个请求中将其值设置为“someval”,则会显示“someval”而不是“index”。

它应该是这样吗?我在哪里可以搜索此问题解决方案?

3 个答案:

答案 0 :(得分:1)

为了提高效率,您的应用实例会在内存中保留多个请求。如果实例暂时不处理任何请求,它将被关闭。所以是的,你会看到这种行为,在一个请求中更改全局会影响另一个请求。更重要的是,Java Servlet规范允许多个执行线程,因此另一个请求可以在执行另一个请求的同时修改您的全局变量。

在生产环境中,您的应用可能会在许多服务器上同时运行。当然,它们没有相同的全局变量集,因此将值更改为一个只会影响对同一个处理程序的后续请求 - 而不是对其他处理程序的请求。

简而言之,webapp中的可变全局变量通常是一个坏主意。

答案 1 :(得分:0)

使用public static final String action = "index";将确保操作的值不会发生变化。

答案 2 :(得分:0)