您的位置:程序门 -> java ->



[讨论]容器启动后,会有几个servlet实例? 


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


[讨论]容器启动后,会有几个servlet实例? [无满意答案结贴,结贴人:laorer]
发表于:2007-10-25 19:23:35 楼主
上次面试时,问了个如果多用户并发访问servlet时,该如何解决.当时想的是好像是由web容器解决的吧.  
后来他再问句如果多个用户访问servlet,容器中会有几个实例,这个就一点也清楚了,随便猜了说1个(有点主观)  
后来到网上查了下,结果如下:  
-------------------------  
一般来说servlet是线程安全的,所以每个用户每一次的调用都是独立的  

当一个servlet被创建并且被装载到内存,它在内存中仅有一个实例,采用多线程去访问这个servlet实例

----------------------------  
再后来自己做了个实验,   http://laorer.javaeye.com/admin/show/132771  
实验的思路如下:  
---  
在servlet中定义了一个整型的类变量(没有进行同步操作,可以粗略的存储被请求的次数)还有整型的实例变量(也没有进行同步操作,用这个来判定是否与类变量相等,相等则只有一个实例,不等应该有多个实例)  
-----  
实验结果证明上面那个说法的正确性,本来也就没事了,但今天无意看到一个servlet2.3规范,便看了下,  
说法是这样的.  
------------  
for   a   servlet   not   hosted   in   a   distributed   environment   (the   default),   the   servlet   container   must   use   only   one   instance   per   servlet   declaration.   however,   for   a   servlet   implementing   the   singlethreadmodel   interface,   the   servlet   container   may   instantiate   multiple   instances   to   handle   a   heavy   request   load   and   serialize   requests  
to   a   particular   instance.

in   the   case   where   a   servlet   was   deployed   as   part   of   an   application   marked   in  
the   deployment   descriptor   as   distributable,   a   container   may   have   only   one   instance  
per   servlet   declaration   per   virtual   machine   (vm).   however,   if   the   servlet   in   a   dis-  
tributable   application   implements   the   singlethreadmodel   interface,   the   container   may   instantiate   multiple   instances   of   that   servlet   in   each   vm   of   the   container.

-------------------  
也找了一份中文规范,不过感觉翻得不太好就不帖出来了

说是如果实现了singlethreadmodel   接口,则可能会有多个实例.便实验了一下,出现的结果不知道怎么解释,实验的方法和前面一样,不过servlet实现了singlethreadmodel   接口.  
结果是每刷一次   类变量增加一次,这个没问题,但是每刷五次,实例变量才增加一次,而且多个浏览器访问的时候,当一个实例变量增加了,其他浏览器的实例变量也增加,   这点就不清楚为什么了,开始以为是容器中有五个实例,但后来想想不对,每个浏览器的实例应该不一样的,所以为什么一个浏览器请求的值变化了,其他浏览器请求的值也会变了呢

实验环境是   eclipse3.2(估计和这没关系)   +   weblogic   8.1   +   jdk   1.4
发表于:2007-10-26 08:42:481楼 得分:0
呵,看样子这里也没人讨论了


快速检索

最新资讯
热门点击