Java ,单实例 多线程 ,web容器,servlet与struts1-2.x系列,线程安全的解决

1.Servlet是如何处理多个请求同时访问呢?

回答:servlet是默认采用单实例,多线程的方式进行。只要webapp被发布到web容器中的时候,servlet只会在发布的时候实例化一次,servlet在其生命周期中只有在将项目给移除或服务器stop的时候才会销毁,那么一个web项目从发布到运行只存在一个servlet的实例。

    servlet等一些web容器中有线程池ThreadPool。此处先贴出tomcat7.0.3中的server.xml里面的代码:

1

时间: 2024-09-15 01:42:50

Java ,单实例 多线程 ,web容器,servlet与struts1-2.x系列,线程安全的解决的相关文章

servlet、struts1和struts2的线程安全问题

一.servlet和struts1 通常情况下,系统只生成servlet的单一实例之后,为每个用户请求建立新的线程.如果很多请求同时到来,那么多个线程可能会并发的访问同一个servlet对象.因此必须小心地同步对字段以及实例变量和其它共享数据的访问,因为多个线程可能同时对同一数据进行访问.所以使用实例变量会产生不安全的结果.struts1也是这种单例模式. servlet和struts1均是单实例.多线程,在不加锁的情况下尽量不要使用局部变量等带来线程不安全的变量,只有请求和局部变量时线程安全的

深入浅出单实例Singleton设计模式

长时间没有用java单实例模式,现在想起来有点忘了,发些东西大家一起熟悉下. 单实例Singleton设计模式可能是被讨论和使用的最广泛的一个设计模式了,这可能也是面试中问得最多的一个设计模式了.这个设计模式主要目的是想在整个系统中只能出现一个类的实例.这样做当然是有必然的,比如你的软件的全局配置信息,或者是一个Factory,或是一个主控类,等等.你希望这个类在整个系统中只能出现一个实例.当然,作为一个技术负责人的你,你当然有权利通过使用非技术的手段来达到你的目的.比如:你在团队内部明文规定,

JAVA防止重复提交Web表单的方法_java

本文实例讲述了JAVA防止重复提交Web表单的方法.分享给大家供大家参考,具体如下: package cn.com.form; import java.io.IOException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Random; import javax.servlet.ServletException; import java

web容器多线程对代码的影响

问题描述 web容器多线程对代码的影响 并发访问web服务器,web服务器会创建多个线程调用代码A.如果代码A中没有任何线程控制关键词(volatile,synchronized等). 问题1:代码A的执行是安全的吗,怎么执行的按顺序吗? 问题2:web容器创建多个线程时,每个线程都会有独立的代码A副本吗,创建独立的实例,工作区间吗? 问题3:这部分是否与其他框架有关?,例如依赖注入/控制反转容器 对这部分我理解不清,有理解错的地方帮忙指正下,先谢过 解决方案 不是线程安全的,你必须自己同步共享

基于纯Java代码的Spring容器和Web容器零配置的思考和实现(3) - 使用配置

经过<基于纯Java代码的Spring容器和Web容器零配置的思考和实现(1) - 数据源与事务管理>和<基于纯Java代码的Spring容器和Web容器零配置的思考和实现(2) - 静态资源.视图和消息器>两篇博文的介绍,我们已经配置好了Spring所需的基本配置.在这边博文中,我们将介绍怎么使用这些配置到实际项目中,并将web.xml文件替换为一个Java类. 我们使用Java代码来配置Spring,目的就是使我们的这些配置能够复用,对于这些配置的复用,我们采用继承和引入来实现

java菜鸟:动态web项目 一用servlet就404

问题描述 java菜鸟:动态web项目 一用servlet就404 两个文件:web.xml和Test.java import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.

配置-Java Web容器启动时,SessionFactory注入失败的问题

问题描述 Java Web容器启动时,SessionFactory注入失败的问题 包结构如下:Spring配置如下:UserDAO代码如下:Tomcat一启动,报错如下:org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userDao': Injection of resource dependencies failed; nested exception is org.

web容器的会话机制

基本所有web应用开发的朋友都很熟悉session会话这个概念,在某个特定时间内,我们说可以在一个会话中存储某些状态,需要的时候又可以把状态取出来,这整个过程的时间空间可以抽象成"会话"这个概念.尽管你对session的使用已经很熟悉了,但你未必真正理解session是什么.因为你只是使用了request.getsession().setAttribute("users", username)把某个值设置到会话中的users变量里面,只是使用了String user

web容器和Ejb容器的区别?

问题描述 web容器和Ejb容器的区别有那些呢?? 解决方案 解决方案二:"两个是不同的容器,也就是说管理的对象不一样.有很多产品同时提供两个容器的服务,比如weblogic,websphere..."EJB容器使用了在用户间共享的实例池.这个池只用于无状态bean和实体bean,有状态bean需要维护状态,因而不能在用户之间转换.Web容器实际上是一个Java运行时(Runtime),提供了JavaServletAPI的一个实现,并且简化了JSP网页.Web容器负责初始化,调用以及管