Web应用及Servlet模型

      前些天被人问起同一个Web应用里可不可以配置servlet-name及url-pattern不同,但servlet-class相同的多个Servlet,今天特地做了个测试,在同一个Web应用里配置了两个这样的Servlet,它们都可以正常运行,互相之间也没有干扰。

      我们都知道Servlet是多线程共享单实例的模型,不过上面这种情况下,Web容器会为这两个Servlet生成两个实例还是仅仅只生成一个实例呢?在jdk 1.5.0_06及Tomcat 5.0.28下测试发现Web容器还是为这两个Servlet分别生成了各自的实例,也就是说Web容器会为每个Servlet生成相应的实例,即使这些Servlet的servlet-class都相同。

      另外,还有人问过我,如果部署在同一个JVM下的多个Web应用中都可以访问并修改某个类的静态变量,这样会不会引发多个Web应用之间的冲突呢?据我所知,在同一个JVM下,通常Web服务器会对不同的Web应用使用不同的classloader,而不同的classloader装载的类型会处于不同的空间中,也就是说即便有几个classloader都装载了类型A,这几个被装载的A也是互不知情的。所以即便同一个JVM下的多个Web应用中都可以访问并修改某个类的静态变量,那其实它们修改的也是同名但处于不同空间下的类的静态变量,并不会引发多个Web应用之间的冲突。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值