servlet支持并发处理请求吗 一般情况下:每秒钟一个servlet可以处理多少个请求?另外servlet在处理并发请求时有什么需要特别处理的吗比如:servlet调用的方法要设置synchonize吗,对数据库操作要synchronize吗 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不用这样考虑的,这个是web程序,............ 不用考虑,每个client一个实例。 最近在看 只了解基础, servlet支持多线程的,多个线程共用一个servlet实例,所以servlet中一般不定义成员变量,这样可以防止并发时的数据读写错误,定义成员变量的话就要做好同步,应该是这样。 线程问题 在一个可以配置的应用中,所有的请求都是一个会话的一部分,引擎一定能够取出通过setAttribute或putValue放入HttpSession对象中的对象。注意以下的情况: .引擎一定能够访问实现了Serializable接口的对象。 .引擎可以选择存储HttpSession对象中指定的对象,如EJB组件和事务。 .引擎能够监听到会话的变动。 如果放入session中的对象没有被Seializable或没有效,servlet可以抛出IllegalArgumentException;如果引擎不支持Session存储对象的机制,引擎一定会抛出IllegalArgumentException。 这些限制意味着,在一个分布式引擎中,不会有额外的并发问题。 如果引擎为了service的品质持续化或迁移session,使用本地持续化的HttpSession或它的属性是不受限制的,开发者要想确保放入session中的属性对象能够可用,最好对象实现Serializable接口。 在迁移一个session时引擎必须通知session中实现了HttpSessinActivationListener的属性对象,必须通知在序列化前钝化的或序列化后激活的session的监听器。 开发分布式的开发者应该清楚的是,一旦引擎运行在超过一个JVM的时候,就不能用static 表明变量来存储应用状态,应该用EJB或数据库赖存储。 多线程问题 servlet引擎可以发送并发的请求给servlet的service方法,servlet开发者必须提供足够的线程来运行service方法。 对开发者来说一个可以选择的方法是实现SingleThreadModel接口,以确保在同一时刻只有一个请求在service方法中。一个引擎要确保请求能够在servlet中持续化,或维持在一个servlet实例池中,如果servlet是web应用服务的一部分,引擎可以在一个虚拟机中拥有一个servlet实例化的池。 对于没有实现SingleThreadModel接口的servlet,如果service方法(或 doGet,doPost)被声明为synchronized,引擎将不能用实例池的途径,而必须持续化请求,强力建议开发者不能声明synchronize service方法,这样会严重影响系统的性能。2单线程servlet SingleThreadModel接口保证了在同一时刻一个servlet实例的service方法只会被一个线程执行。这对于每个请求发送给每个实例是很重要的。引擎可以从对象池中选择,对象池可以在同一时刻保持多个实例,如HttpSession可以被多个servlet在任何时候调用包括实现了SingleThreadModel接口的servlet 这跟 servlet 没有关系。这跟服务器,怎么使用 servlet 有关系。而且你写的是 web 程序。又不是让你拿 serlvet 写服务器。 楼主这个话问的,servlet 应该是为每个请求创建的,又不是单例的,所以处理请求是服务器的工作,不是 serlvet 的本分。而且他是为每个请求创建的,而且服务在使用他时,是由服务器来处理,这个不用你操心。 大家好,我想问大家一个关于hibernate的问题 div中加载另一个网页的问题 axis2java 生成的java代码调用 xfire 生成的web service 问题 Hibernate 级联删除问题 jsp更改区域语言的问题 如何改应用程序的目录 大家帮忙看看这个异常该如何解决 想买两本jsp书看看,大家认为哪适合初学者呀? 如何检测系统是否支持JDBC2.0! 一个实行中客户端不断访问服务器端某一标志的问题 session属于那个进程或线程 jsp域名
在一个可以配置的应用中,所有的请求都是一个会话的一部分,引擎一定能够取出通过setAttribute或putValue放入HttpSession对象中的对象。注意以下的情况:
.引擎一定能够访问实现了Serializable接口的对象。
.引擎可以选择存储HttpSession对象中指定的对象,如EJB组件和事务。
.引擎能够监听到会话的变动。
如果放入session中的对象没有被Seializable或没有效,servlet可以抛出IllegalArgumentException;如果引擎不支持Session存储对象的机制,引擎一定会抛出IllegalArgumentException。
这些限制意味着,在一个分布式引擎中,不会有额外的并发问题。
如果引擎为了service的品质持续化或迁移session,使用本地持续化的HttpSession或它的属性是不受限制的,开发者要想确保放入session中的属性对象能够可用,最好对象实现Serializable接口。
在迁移一个session时引擎必须通知session中实现了HttpSessinActivationListener的属性对象,必须通知在序列化前钝化的或序列化后激活的session的监听器。
开发分布式的开发者应该清楚的是,一旦引擎运行在超过一个JVM的时候,就不能用static 表明变量来存储应用状态,应该用EJB或数据库赖存储。
多线程问题
servlet引擎可以发送并发的请求给servlet的service方法,servlet开发者必须提供足够的线程来运行service方法。
对开发者来说一个可以选择的方法是实现SingleThreadModel接口,以确保在同一时刻只有一个请求在service方法中。一个引擎要确保请求能够在servlet中持续化,或维持在一个servlet实例池中,如果servlet是web应用服务的一部分,引擎可以在一个虚拟机中拥有一个servlet实例化的池。
对于没有实现SingleThreadModel接口的servlet,如果service方法(或 doGet,doPost)被声明为synchronized,引擎将不能用实例池的途径,而必须持续化请求,强力建议开发者不能声明synchronize service方法,这样会严重影响系统的性能。
2单线程servlet
SingleThreadModel接口保证了在同一时刻一个servlet实例的service方法只会被一个线程执行。这对于每个请求发送给每个实例是很重要的。引擎可以从对象池中选择,对象池可以在同一时刻保持多个实例,如HttpSession可以被多个servlet在任何时候调用包括实现了SingleThreadModel接口的servlet