1、webLogic:oracle公司,大型的JavaEE服务器,支持所有的JavaEE范式,收费
2、webSphere:IBM公司,同上,
3、JBOSS:JBOSS公司,同上,
4、Tomcat:Apache基金,中小型JavaEE服务器,仅仅支持少量的JavaEE规范和servlet、jsp。开源,免费(其实就是缺少EJB容器)
5、Jetty:同Tomcat,相较于Tomcat更加轻量化,可插拔,可二次开发,如果用到企业级开发上就显得力不从心,需要扩展功能
Tomcat、Jetty 核心技术——Servlet引擎(因此也有人说web server就是 Servelet 引擎,如果是正在运行的 web server 则应该叫做 Servlet 容器):
Servlet引擎进行许多工作,能大大简化编程人员工作.下面是Servlet的生命周期.
1.创建Servlet实例.
Servlet引擎装入JAVA类,在Servlet引擎启动时或首次请求特定Servlet时创建Servlet实例.发生时间取决于特定Servlet的设置.通常Servlet引擎只生成Servlet对象的一个备份,每次请求时复用这个对象,即使同时处理多个请求.这种方法可以节省对每个请求生成新的对象的时间,但需要在编程时认真计划.替换方法见"单线程模型".
2.实例初始化.
Servlet引擎调用Servlet的init()方法.利用此方法,通常要设置Servlet周期中的常量参数,如文件路径和数据库连接池.实例初始化之后,放在内存中,直到收到请求.
3.请求处理.
Servlet引擎收到的每个请求由单独的Java线程处理.Servlet引擎可能创建新线程,也可能从池中分配一个线程.线程创建请求并响应对象,然后调用Servlet的service()方法.service()方法确定如何处理请求.
4.线程管理.
多个线程可以同时执行一个对象的方法,各有自己的请求与响应对象.将代码设计成线程安全是Servlet编程的主要部分.
5.其它服务
Servlet引擎提供的典型服务是对话跟踪,使程序可以跟踪属于特定用户的数据.
6.实例删除
Servlet引擎需要安全关闭时,或需要恢复内存时,调用Servlet的destroy()方法.这时Servlet可以关闭文件并优雅地关闭.