当前位置:首页 » 网页前端 » web容器性能对比
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

web容器性能对比

发布时间: 2022-11-13 09:19:05

㈠ 有哪些轻量级web服务器

(1)ApacheApache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上。Apache源于NCSAhttpd服务器,经过多次修改,成为世界上最流行的Web服务器软件之一。Apache取自"a patchy server"的读音,意思是充满补丁的服务器,因为它是自由软件,所以不断有人来为它开发新的功能、新的特性、修改原来的缺陷。Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。(2)IIS是英文Internet Information Server的缩写,译成中文就是"Internet信息服务"的意思。它是微软公司主推的服务器,最新的版本是Windows2008里面包含的IIS 7,IIS与Window Server完全集成在一起,因而用户能够利用Windows Server和NTFS(NT File System,NT的文件系统)内置的安全特性,建立强大,灵活而安全的Internet和Intranet站点。(3)GFEGoogle的web服务器,用户数量激增。目前紧逼iis。(4)Nginx不仅是一个小巧且高效的HTTP服务器,也可以做一个高效的负载均衡反向代理,通过它接受用户的请求并分发到多个Mongrel进程可以极大提高Rails应用的并发能力。(5)Lighttpd是由德国人 Jan Kneschke 领导开发的,基于BSD许可的开源WEB服务器软件,其根本的目的是提供一个专门针对高性能网站,安全、快速、兼容性好并且灵活的web server环境。具有非常低的内存开销,CPU占用率低,效能好,以及丰富的模块等特点。Lighttpd 是众多OpenSource轻量级的web server中较为优秀的一个。支持FastCGI, CGI, Auth, 输出压缩(output compress), URL重写, Alias等重要功能。(6)Zeus是一个运行于Unix下的非常优秀的Web Server,据说性能超过Apache,是效率最高的Web Server之一。(7)Sun的Java系统Web服务器也就是以前的Sun ONE Web Server。主要出现在那些运行Sun的Solaris操作系统的关键任务级Web服务器上。它最新的版本号是6.1,可以支持x86版本Solaris,Red Hat Linux,HP-UX 11i, IBM AIX,甚至可以支持Windows,但它的大多数用户都选择了SPARC版本的Solaris操作系统。(8)Resin提供了最快的jsp/servlets运行平台。在java和javascript的支持下,Resin可以为任务灵活选用合适的开发语言。Resin的一种先进的语言XSL(XML stylesheet language)可以使得形式和内容相分离。(9)Jetty是一个开源的servlet容器,它为基于Java的web内容,例如JSP和servlet提供运行环境。Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布。开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运行(stand-alone)的Java应用提供网络和web连接。(10)BEA WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。 BEA WebLogic Server拥有处理关键Web应用系统问题所需的性能、可扩展性和高可用性。(11)Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

㈡ j2ee开发中的“java容器”和“web容器”有什么区别

web容器是一个Java 所编写的程序,原先必须自行编写程序以管理对象关系,现在容器都会自动帮您作好
容器(Container) 容器是一个Java 所编写的程序,原先必须自行编写程序以管理对象关系,现在容器都会自动帮您作好。 常用容器 jBoss, WebSphere,WebLogic,Resin,Tomcat。

JAVA内部的容器类
Java容器类包含List、ArrayList、Vector及map、HashTable、HashMap 。
ArrayList和HashMap是异步的,Vector和HashTable是同步的,所以Vector和HashTable是线程安全的,而 ArrayList和HashMap并不是线程安全的。因为同步需要花费机器时间,所以Vector和HashTable的执行效率要低于 ArrayList和HashMap。、

Vector是同步的。这个类中的一些方法保证了Vector中的对象是线程安全的。而ArrayList则是异步的,因此ArrayList中的对象并不是线程安全的。因为同步的要求会影响执行的效率,所以如果你不需要线程安全的集合那么使用ArrayList是一个很好的选择,这样可以避免由于同步带来的不必要的性能开销。

㈢ web容器 web服务器 servlet/jsp容器 之间的区别和关系

Servlet是Java代码为主,JSP是html为主。JSP是Servlet的化生。JSP最后会自动生成.java/.clsss文件。
Servlet擅长Java代码,JSP擅长html。但是Servler也能输出Html代码,JSP也能书写Java代码。不过有点不方便。

㈣ tomcat能只做web服务器吗和apache,nginx有啥区别

第一、Nginx和Tomcat的区别
Nginx主要用做静态内容服务和代理服务器,直接将外来的请求转发给后面的应用服务器;Tomcat更像是一个应用容器。
第二、nginx和Apache的区别
Apache是同步多进程模型,是可以一个连接对应一个进程,而nginx属于一步的,多个连接可以对应一个进程。
Nginx轻量级,抗并发,处理静态文件好;Apache稳定性好,对PHP支持比较简单,nginx还需要配合其他后端进行使用,处理动态请求上更有优势。
建议使用前端nginx抗并发,后端Apache集群,配合起来效果会更好。
第三、Tomcat和Apache的区别
Apache由C语言实现,支持各种特性和模块从而来扩展核心功能;Tomcat是Java实现的,可以更好地支持servlet和jsp。
Apache也是普通的服务器,本身只支持HTML静态普遍网页,不过可以通过插件来支持PHP等;Tomcat是jsp/servlet容器,支持HTML、jsp、asp、PHP、CGI等。
Apache侧重于http server,Tomcat侧重于servlet引擎。

㈤ Tomcat和Websphere的区别

一、JSP的中文乱码问题
其根源在于:Web容器(Tomcat)默认的字符处理编码是iso-8859-1,对于需要在浏览器页面上显示中文的JSP程序,

但在程序中并没有指定中文的字符集,那么中文将在浏览器页面上显示为乱码。当然,前面所说的是指在Tomcat服务器下的,其他服务

器有些不是这样的,比如BEA Weblogic和IBM Websphere是从操作系统中取得默认的编码,然后按该编码来转码所有用户请求.Struts中

文问题有三种:发送请求时的中文问题、处理响应结果的中文问题和国际化资源文件的中文问题。

1. 发送请求时的中文问题

客户机向服务器发送请求时,根据所使用浏览器的不同可能会有不同的编码形式。不过通常情况下在请求到达Web容器前要将之转码,

转成某种固定的编码以方便Web应用的处理。这种问题有三种处理方法:

第一种(针对Tomcat 5 对POST请求有效,GET请求无效,因为Tomcat 5 对POST和GET请求时分别处理的)可以采用设置用户请求对象的编码形式,也就是以HttpServletRequest对象的编码的形式来进行用户请求的转码:

//将用户请求转码为GB2312、GB18030、GBK、UTF-8 等型,具体转为什么类型的编码以您的jsp文件的编码方式为准,java、jsp 、js 、css应保持一致的编码方式。这里以GBK为例。

request.setCharacterEncoding("GBK");

第二种(对GET请求有效),可以在Servlet中对用户输入的数据进行转码。Web容器接受到一个请求时,它会将它发往某个处理的Servlet。在Servlet中直接获取用户请求的数据,然后将之转码为需要的格式,例如把数据转换为GBK格式:

String username = request.getParameter("username");

username = new String(username.getBytes("iso-8859-1”), "GBK");

以上两种方法都是很常用的,但第一种是每个页面都要去修改,当JSP页面很多时比较麻烦,第二种就每个发送的数据都要转码,也很麻烦。

第三种,就是采用Filter过滤器方式,将用户的所有请求都通过过滤器进行转码,这种方法就克服了以上两种方法的缺点。代码如下:

public void doFilter(ServletRequest request, ServletResponse response,

FilterChain chain ) throws IOException, ServletException {

request.setCharacterEncoding("GBK");

//response.setContentType("text/html;charset=GBK");

chain.doFilter(request, response);

}

这里转码为GBK过滤器的主要代码,当然还要把这个类要在web.xml文件中部署。

2. 处理响应结果的中文问题

响应的结果包括Servlet、JSP和HTML三种情况,可以通过以下方式设置响应结果编码:

对于Servlet,可以在Servlet中为其设置响应代码类型,代码如下:

response.setContentType("text/html;charset=GBK"); 也可把这句加到上面的Filter中,如注释掉的部分。

有人说用 response.setCharacterEncoding("GBK"); 无效,必须用 response.setContentType("text/html;charset=GBK"); 本人没试过。

对于JSP,是比较方便的,只需要在JSP最前部分按如下方式声明:

<%@ page contentType="text/html;charset=GBK"%>

对于HTML,其和JSP文件基本类似,也是在页面最前部分按如下方式声明:

<head>

<META HTP-EQUIV="contentType" CONTENT="text/html;charset=GBK">

</head>

3.? 国际化资源文件的中文问题

一个Struts应用程序中,可以配置多个资源包,无论是Action、ActionForm还是JSP都可以访问这些包中的资源。资源包就是由扩展名为.properties的文件组成的一组具有相同前缀的文件,如ApplicationResources_zh_CN.properties、ApplicationResources_zh.properties和ApplicationResources.properties。这些文件就构成一个Struts的资源包,它们都有一个统一的前缀ApplicationResources,凡是有相同前缀的资源文件就都属于一个包。

当用MyEclipse编写资源文件时,默认是不能保存中文的,因为默认保存编码的格式是ISO-8859-1,这就需要修改为gb2312或者gbk编码格式。Windons -->Preferences-->General -->Content Types-->Text-->Java Properties File,在最下方把其Default encoding改为"UTF-8”,然后"update”就可以保存中文了。但就这样保存的中文还是不能够在页面上使用的,因为Web容器默认是使用ISO-8859-1,也就会把中文用ISO-8859-1的格式发送给客户页面,显示的还是乱码,这就是JAVA国际化的问题。JAVA是支持unicode编码格式的,unicode是国际统一通用编码,所以不管什么格式的编码转化为unicode编码肯定不会显示乱码的。这个时候就是需要把资源文件的UTG-8编码格式转化为unicode编码格式,而SUN公司又提供了这样的一种工具。在JDK的安装目录bin下,有一个叫native2ascii可执行文件,这个是专门来进行资源文件转码的。打开cmd,进入JDK的bin目录下,把资源文件拷贝到该目录下,执行该命令。比如:

native2ascii –encoding GBK ApplicationResources.properties ApplicationResources_zh_CN.properties 就是把GBK编码格式ApplicationResources.properties转化为unicode编码格式ApplicationResources_zh_CN.properties,这样显示页面时就不会出现乱码了。

㈥ Tomcat,Weblogic,Jboss,WebSphere之间的区别和联系

weblogic

WebLogic是美国bea公司出品的一个applicationserver确切的说是一个基于j2ee架构的中间件。BEAWebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和JavaEnterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。

webSphere

WebSphere是IBM的集成软件平台。它包含了编写、运行和监视全天候的工业强度的随需应变Web应用程序和跨平台、跨产品解决方案所需要的整个中间件基础设施,如服务器、服务和工具。WebSphere提供了可靠、灵活和健壮的集成软件。

JBoss

JBoss是一个管理EJB的容器和服务器,支持EJB1.1、EJB2.0和EJB3.0的规范。但JBoss核心服务不包括支持servlet/JSP的WEB容器,一般与Tomcat或Jetty绑定使用。2006年,Jboss公司被Redhat公司收购。

Tomcat

Tomcat是Apache软件基金会的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet和JSP规范总是能在Tomcat中得到体现,Tomcat5支持最新的Servlet2.4和JSP2.0规范。因为Tomcat技术先进、性能稳定,而且免费,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web应用服务器。

㈦ JBoss Web和 Tomcat的区别

JBoss Web和 Tomcat的区别

在Web2.0的浪潮中,各种页面技术和框架不断涌现,为服务器端的基础架构提出了更高的稳定性和可扩展性的要求。近年来,作为开源中间件的全 球领导者,JBoss在J2EE应用服务器领域已成为发展最为迅速的应用服务器。在市场占有率和服务满意度上取得了巨大的成功,丝毫不逊色于其它的非开源 竞争对手,如WebSphere、WebLogic、Application Server。JBoss Web的诸多优越性能,正是其广为流行的原因。

基于Tomcat内核,青胜于蓝

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可。其运行时占用的系统资源小,扩展性好,且支持负载平衡与邮件服务等开发应用系统常用的功能。作为一个小型的轻 量级应用服务器,Tomcat在中小型系统和并发访问用户不是很多的场合下被普遍使用,成为目前比较流行的Web 应用服务器。

而JBoss Web采用业界最优的开源Java Web引擎, 将Java社区中下载量最大,用户数最多,标准支持最完备的Tomcat内核作为其Servlet容器引擎,并加以审核和调优。单纯的Tomcat性能有 限,在很多地方表现有欠缺,如活动连接支持、静态内容、大文件和HTTPS等。除了性能问题,Tomcat的另一大缺点是它是一个受限的集成平台,仅能运 行Java应用程序。企业在使用时Tomcat,往往还需同时部署Apache Web Server以与之整合。此配置较为繁琐,且不能保证性能的优越性。

JBoss在Tomcat的基础上,对其进行本地化,将Tomcat 以内嵌的方式集成到 JBoss 中。JBoss Web通过使用APR和Tomcat本地技术的混合模型来解决Tomcat的诸多不足。混合技术模型从最新的操作系统技术里提供了最好的线程和事件处理。 结果,JBoss Web达到了可扩展性,性能参数匹配甚至超越了本地Apache HTTP服务器或者IIS。譬如JBoss Web能够提供数据库连接池服务,不仅支持 JSP 等 Java 技术,同时还支持其他 Web 技术的集成,譬如 PHP、.NET 两大阵营。

标准化是减小技术依赖风险,保护投资最好的方式。JBoss Web率先支持全系列JEE Web标准,从根本上保证了应用“一次开发,到处运行”的特点,使应用成品能方便地在JBoss Web和其他Java Web服务器之间轻易迁移。

㈧ 简述一下Java中的web容器,举几个例子也行

目前市场上常用的开源Java Web容器有Tomcat、Resin和Jetty。其中Resin从V3.0后需要购买才能用于商业目的,而其他两种则是纯开源的。可以分别从他们的网站上下载最新的二进制包和源代码。
作为Web容器,需要承受较高的访问量,能够同时响应不同用户的请求,能够在恶劣环境下保持较高的稳定性和健壮性。在HTTP服务器领域,Apache HTTPD的效率是最高的,也是最为稳定的,但它只能处理静态页面的请求,如果需要支持动态页面请求,则必须安装相应的插件,比如mod_perl可以处理Perl脚本,mod_python可以处理Python脚本。

上面介绍的三中Web容器,都是使用Java编写的HTTP服务器,当然他们都可以嵌到Apache中使用,也可以独立使用。分析它们处理客户请求的方法有助于了解Java多线程和线程池的实现方法,为设计强大的多线程服务器打好基础。

Tomcat是使用最广的Java Web容器,功能强大,可扩展性强。最新版本的Tomcat(5.5.17)为了提高响应速度和效率,使用了Apache Portable Runtime(APR)作为最底层,使用了APR中包含Socket、缓冲池等多种技术,性能也提高了。APR也是Apache HTTPD的最底层。可想而知,同属于ASF(Apache Software Foundation)中的成员,互补互用的情况还是很多的,虽然使用了不同的开发语言。

Tomcat 的线程池位于tomcat-util.jar文件中,包含了两种线程池方案。方案一:使用APR的Pool技术,使用了JNI;方案二:使用Java实现的ThreadPool。这里介绍的是第二种。如果想了解APR的Pool技术,可以查看APR的源代码。

ThreadPool默认创建了5个线程,保存在一个200维的线程数组中,创建时就启动了这些线程,当然在没有请求时,它们都处理“等待”状态(其实就是一个while循环,不停的等待notify)。如果有请求时,空闲线程会被唤醒执行用户的请求。

具体的请求过程是: 服务启动时,创建一个一维线程数组(maxThread=200个),并创建空闲线程(minSpareThreads=5个)随时等待用户请求。 当有用户请求时,调用 threadpool.runIt(ThreadPoolRunnable)方法,将一个需要执行的实例传给ThreadPool中。其中用户需要执行的实例必须实现ThreadPoolRunnable接口。 ThreadPool首先查找空闲的线程,如果有则用它运行要执行ThreadPoolRunnable;如果没有空闲线程并且没有超过maxThreads,就一次性创建minSpareThreads个空闲线程;如果已经超过了maxThreads了,就等待空闲线程了。总之,要找到空闲的线程,以便用它执行实例。找到后,将该线程从线程数组中移走。 接着唤醒已经找到的空闲线程,用它运行执行实例(ThreadPoolRunnable)。 运行完ThreadPoolRunnable后,就将该线程重新放到线程数组中,作为空闲线程供后续使用。

由此可以看出,Tomcat的线程池实现是比较简单的,ThreadPool.java也只有840行代码。用一个一维数组保存空闲的线程,每次以一个较小步伐(5个)创建空闲线程并放到线程池中。使用时从数组中移走空闲的线程,用完后,再“归还”给线程池。

㈨ Apusic 应用服务器的性能如何 同等环境下和Weblogic、WebSphere、Jboss比较,纯Web应用下,和tomcat比

金蝶Apusic应用服务器6.0新特性
在金蝶Apusic应用服务器6.0旧有版本的基础上,金蝶Apusic应用服务器6.0具备了更多的新的特性和对以前特性的增强,情况如下。

对RIA(Rich Internet Application)的更全面支持

金蝶Apusic应用服务器6.0在JSF 1.2及标准EL的基础上作了重要扩充,在容器级别提供JSF 托管Bean与JPA实体、Spring Bean之间的双向注入管理,结合全球独创的OperaMasks SDK及一体化开发与管理环境OperaMasks Studio,真正实现基于Java EE技术RIA应用开发的全生命周期管理。

提供增强SOA基础设施

金蝶Apusic应用服务器6.0在5.0的基础上,进一步强化了SOA基础设施能力,实现对SCA/SDO技术的良好支持,并实现对第三方Web Services框架的良好兼容性,为面向SOA系统提供更为平滑的支撑能力。

实现增强的可靠性

金蝶Apusic应用服务器6.0不仅支持应用的垂直扩展和水平扩展,并且能够适应复杂环境下系统的扩展需求,提供配对算法、全复制算法等,实现对F5、Radware等硬件负载均衡设备及常规Web Server的全面兼容。

性能优化及提升

金蝶Apusic应用服务器6.0在5.0的基础上,进行了大量性能优化工作,包括静态资源缓存、NIO InputStream算法及长连接管理优化、HTTP 304算法优化、GZIP算法优化、Chunked算法优化等。经优化后,性能提升明显,服务的加载时间、JSP页面的编译时间等大大缩短。

安全性能增强

金蝶Apusic应用服务器6.0在安全性方面作了重要增强,实现对多种安全身份管理及第三方安全产品的可插拔式支持,并实现对多认证中心、级联证书的全面支持。

更全面的兼容性支持

金蝶Apusic应用服务器6.0实现对第三方应用服务器上开发的应用更好的兼容性,提供可配置的类加载策略、更宽松的TLD验证、可插拔的JSP编译器、可配置的中文编码支持策略等非常实用、有针对性的功能,帮助第三方应用无缝迁移到金蝶Apusic应用服务器6.0。

㈩ j2ee开发中的“java容器”和“web容器”有什么区别

容器是一个Java 所编写的程序,原先必须自行编写程序以管理对象关系,现在容器都会自动帮您作好。 常用容器 jBoss, WebSphere,WebLogic,Resin,Tomcat。JAVA内部的容器类 Java容器类包含List、ArrayList、Vector及map、HashTable、HashMap 。ArrayList和HashMap是异步的,Vector和HashTable是同步的,所以Vector和HashTable是线程安全的,而 ArrayList和HashMap并不是线程安全的。因为同步需要花费机器时间,所以Vector和HashTable的执行效率要低于 ArrayList和HashMap。、Vector是同步的。这个类中的一些方法保证了Vector中的对象是线程安全的。而ArrayList则是异步的,因此ArrayList中的对象并不是线程安全的。因为同步的要求会影响执行的效率,所以如果你不需要线程安全的集合那么使用ArrayList是一个很好的选择,这样可以避免由于同步带来的不必要的性能开销。====================================================================================容器是一个Java 所编写的程序,原先必须自行编写程序以管理对象关系,现在容器都会自动帮您作好在通常情况下 我们提到的 servlet容器 web容器 jsp容器 之类的 意思相同 指的是同一种东西(例如: WebSphere,WebLogic,Resin,Tomcat )做软件 我们提到的服务器 都指的是软件(运行在硬件服务器上的) 分为:静态服务器 和 动态服务器。 服务器 顾名思义 是用在网络上的,上面提到的容器 就包含在动态服务器里java容器 我个人认为你指的应该是 编译和解释执行的环境JDK...从严格定义讲:Java容器类包含List、ArrayList、Vector及map、HashTable、HashMap=====================================================================================servlet容器,负责管理servlet生命周期。 web容器,负责管理和部署web应用,其本身可能具备servlet容器组件;如果没有,一般能将第三方servlet容器作为组件整合进web容器。 应用服务器,其功能远远大于web容器,因为它可以部署EJB应用,可以实现容器管理的事务,一般的应用服务器有weblogic和websphere等,它们都是商业服务器,功能强大但都是收费的。web容器最典型的就是tomcat了,Tomcat是web容器也是servlet容器。