关于singleton的问题,它只在一个会话中有效????

03-08-30 testu

我写了一个SINGLETON的类,然后在JSP里使用它,我发现

它并没有真正的是一个单例,比如在1.jsp中使用它,当我

不停的刷新本页时,它却是只被创建了一次,也就是在第一次

访问1.jsp时候被创建了,以后不论怎么刷新1.jsp,都不会再创建,

但是当我打开一个新窗口时,再访问1.jsp,发现它又被创建了一次。

后来,我写了一个SERVLET,在它里面创建这个SINGLETON类的实例,

然后把这个SERVLET在web.xml里设置为onload 1,这时,不论我开

多少个IE,去访问1.jsp,这个类都不会被再次创建

请问,为什么会出现这种情况?????

banq
2003-08-30 14:08
SINGLETON怎么在Jsp中创建?

testu
2003-08-30 15:36
可能是我没说清楚,我不是说在JSP创建STINGLETON,

我的意思是,我写了一个SINGGLETON的类,在JSP里调用,如:

public class Myone
{
	private static final Myone m_instance = new Myone();

	private int counters = 0;

    private Myone() { counters=0; }

    public static Myone getInstance() {
        return m_instance;
    }
    ........
}

在其他的JAVABEAN中,使用Myone,比如:
public class other
{
.......
    public void init()
    {
        Myone one=Myone.getInstance();
        .....
     }
}

然后在1.jsp中,如果我写:
<%
other obj=new other();
obj.init();
......
%>
<p>

那么,当我访问1.jsp的时候,就会建立这个单例类Myone,

而且不论我刷新1.jsp多少次,Myone只有一个。

但是如果我新开一个IE,重新访问1.jsp,这时就会创建一个

新的Myone,而不是刚才那个已经创建好的。

我的问题是:

既然是单例类,为什么还会被创建多次那?

photonman
2003-08-30 20:59
这个可能是实例的生存周期问题,具体还得看Servlet容器的处理了。

banq
2003-08-31 18:42
你是如何得知singleton对象又被创建一次呢?

猜你喜欢
2Go 1 2 下一页