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