㈠ 有哪些輕量級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容器。