Java应用程序中的半静态字段

时间:2012-02-08 07:29:34

标签: java

我编写了一个Web服务应用程序,它在主类中为每个请求生成随机值(用于记录)。

我无法将其设置为静态字段,因为下一个请求将覆盖它。

我也无法将它传递给我在主要类中使用的每个类(作为参数或使用setter)。

是否可以创建一些半静态字段 - 对于一个请求是可见的,但对于每个进入Web服务的其他请求都不可见?

3 个答案:

答案 0 :(得分:4)

您可以放心地假设,在Java EE模型中,每个单个请求都由单个线程提供,并且并发请求不存在争用。

话虽如此,您可以使用ThreadLocal使用Singleton,让Servlet填充值并让底层类访问sigleton而不需要线程概念或HTTP请求上下文:

public class RandomValueHolder {

private static ThreadLocal<Long> randomValue;

public static Long getRandomValue() {
    return randomValue.get();
}

public static void setRandomValue(Long value) {
    randomValue = new ThreadLocal<Long>();
    randomValue.set(value);

}
}

答案 1 :(得分:2)

为什么不使用HttpRequest并将值存储为attribute

答案 2 :(得分:2)

使用Request.setAttribute()将数据保存在请求中,并使用相应的Request.getAttribute()进行检索。