我的Weblogic门户网站应用程序中包含以下代码:
public class RoutesProgressListener implements ProgressListener {
private static long bytesTransferred = 0;
private static long fileSize = -100;
在上面的类中,bytesTransferred
和fileSize
变量是静态的。这些变量会导致什么问题?
答案 0 :(得分:1)
首先,由于这些变量是静态的,因此它们与类相关联,而不是与对象相关联。因此,它们由定义共享。
其次,这是什么类型的听众?如果它是HttpSessionListener
,则它是应用程序范围的。因此,即使您将这些变量设置为非静态,它们也将由所有用户共享。
答案 1 :(得分:0)
此代码的主要问题是您已将这些变量定义为静态,这意味着两件事:
bytesTransferred
和fileSize
的一个实例。像Weblogic这样的Java EE容器是一个多线程环境,所以每当你有多个活动连接时,你就会遇到问题。
尝试将这些变量更改为实例(非静态)变量,并为每个请求实例化一个新的ProgressListener。