ProgressListener中的静态变量

时间:2013-03-12 20:06:25

标签: java weblogic static-variables

我的Weblogic门户网站应用程序中包含以下代码:

public class RoutesProgressListener implements ProgressListener {

private static long bytesTransferred = 0;
private static long fileSize = -100;

在上面的类中,bytesTransferredfileSize变量是静态的。这些变量会导致什么问题?

2 个答案:

答案 0 :(得分:1)

首先,由于这些变量是静态的,因此它们与类相关联,而不是与对象相关联。因此,它们由定义共享。

其次,这是什么类型的听众?如果它是HttpSessionListener,则它是应用程序范围的。因此,即使您将这些变量设置为非静态,它们也将由所有用户共享。

答案 1 :(得分:0)

此代码的主要问题是您已将这些变量定义为静态,这意味着两件事:

  1. 只能在一个JVM中创建bytesTransferredfileSize的一个实例。
  2. 所有主题都将共享这些值。
  3. 像Weblogic这样的Java EE容器是一个多线程环境,所以每当你有多个活动连接时,你就会遇到问题。

    尝试将这些变量更改为实例(非静态)变量,并为每个请求实例化一个新的ProgressListener。